シルバーウィークに久しぶりに連休を取ったので Tales of ARISE をやってました。まだクリアしてません。もうちょいでクリアだと思うのですが。なので最近はゲームばっかりしてます。
はい。では本題です。
tails-of-words 0.3.0 をリリースしました。
tails-of-words は「ブログズミ: CEDEC でやってた表記ゆれ検出をお試し実装してみた」で作成した表記ゆれ検出ツールです。
(なんだか某ゲームっぽいツール名ですね)
今回は前回ブログ時点からの差分を紹介したいと思います。
変更履歴
knp 対応
まず大きな変更点として knp(pyknp) に対応しました。
knp は juman の出力を入力に係り受けとかを解析してくれるものですが、
tails-of-words では knp の固有表現検出機能を使いました。
固有表現検出機能を使うと以下のように「奈良先端科学技術大学院大学」を1つの単語として検出できるようになります。
knp を有効にするには --knp オプションを付けます。実行環境に knp がインストールされている必要があるので、knp インストール済みの tails-of-words の docker container を使うのが楽だと思います。
固有表現で拾えたやつ pic.twitter.com/7niZl1VRKS
— ずみっくす@あつまれCIサービス (@srz_zumix) September 19, 2021
コンフィグファイル対応
tails-of-words のオプション及び評価関数のパラメータをファイル指定できるようにしました。
log: DEBUG html2test: True exclude_ascii: True exclude_alphabet: True jaro_winkler: True knp: False # スコア計算の設定値 score_config: # 読みが同じ時にかける値 same_yomi_scale: 1.2 # 出現数の差の正規化数([0,1])にかける値 occurrences_sacle: 1.0 # 読みが同じかつ、長音が消えてる場合にかける値 same_yomi_with_remove_long_vowel_scale: 0.8 # 片方を内包し、末尾の長音の差分のみの場合にかける値 diff_only_long_vowel_scale: 1.2 # 片方を内包している場合にかける値 inclue_other_one: 0.5
形態素解析のための正規化による表記ゆれ吸収問題を解決
pyknp で knp/jumanpp の出力する際に特定の文字列が出力フォーマットと衝突し、正しくパースできないので(たとえば半角スペースや @ などの記号)、解析前に全角文字に変換したりしているのですが、これにより当該文字の半角・全角の表記ゆれ検出ができないようになっていました。
これに対応するために、pyknp の結果の形態素の見出し(midasi)から正規化した文字をもとに戻す処理をいれました。
また固有表現検出に対応したことで「2021 年秋」と「2021 年秋」のようなスペースのゆれも検出できるようになりました。(スペース含んだ固有表現と認識されればの話)
jaro_winkler 編集距離に対応
0=不一致 1=一致
XML入力に対応
xml 対応して blogger のダンプ xml を食わせてみた
— ずみっくす@あつまれCIサービス (@srz_zumix) September 10, 2021
割といいのでは?
ファルダってなんだろ・・ pic.twitter.com/CgDPKUhULa
標準入力に対応
curl -fsSL https://srz-zumix.blogspot.com/2021/09/cedec.html | tails-of-words --stdin-type html swing --exclude-alphabet --exclude-ascii -t 1 -
ASCII のみやアルファベットのみを除外するオプションを追加
未定義語を除外するとカタカナ語も除外されるので ASCII や英数字のみを除外できるオプションを追加 pic.twitter.com/c4wVd9JzeA
— ずみっくす@あつまれCIサービス (@srz_zumix) September 11, 2021
0 件のコメント:
コメントを投稿