私はPythonでレンマタイザーを構築しています。リアルタイムで実行/かなり大量のデータを処理する必要があるため、処理速度が重要です。データ: 組み合わせることができるすべての単語タイプにリンクされているすべての可能な接尾辞があります。さらに、ワードタイプとレンマの両方にリンクされているレンマフォームがあります。プログラムは入力として単語を受け取り、その補題を出力します。単語 = 補題 + 接尾辞
例 (注: 例は英語で示されていますが、私は英語のレンマタイザーを作成していません):
言葉:禁止
見出し語: 禁止
接尾辞:ing
レンマ: 禁止する
私の解決策:
データを(ネストされた)辞書に変換しました:
suffixdict : {suffix1:[type1,type2, ... , type(n)], suffix2:[type1,type2, ... ,
type(n)]}
lemmaformdict : {lemmaform:{type1:lemma}}
1) 可能なすべての接尾辞とそれらがリンクされている単語の種類を見つけます。可能な限り長い接尾辞が 3 文字の長さである場合、プログラムは 'ing'、'ng'、'n' を suffixdict のキーに一致させようとします。キーが存在する場合、値 (ワードタイプのセット) を返します。
2) 一致するサフィックスごとに、dict からレンマフォームを検索します。lemmaform が存在する場合、wordtypes を返します。
3) 最後に、プログラムはステップ 1) と 2) で生成された単語タイプの交差を試み、交差が成功した場合、単語のレンマを返します。
私の質問: 速度の観点から、私の問題に対するより良い解決策はありますか? (頻繁な単語と補題を辞書に保持するオプションを無視して) 大いに感謝します。