記事ディレクトリ
検索エンジン: ドキュメントの見出し語化とコーパス処理
レンマタイゼーション: 特定の文字列を一連のサブシーケンスに分割するプロセス。各サブシーケンスはトークンと呼ばれます
検索エンジンでのユーザーの入力は、取得のためにバックエンドに送信される前に語彙化する必要があります。
(1) シンボルクリア
パイソン
Python の string モジュールの下の句読点には、すべての英語の句読点が含まれています
シンボルの削除は、Python に付属の文字列置換メソッドを使用して実行できます。
punctuation_string = string.punctuation
lines = re.sub('[{}]'.format(punctuation_string), " ", text)
输入 'I believe you!And you?'
输出 'I believe you And you '
ジャワ
正規表現の使用と Java 文字列の置換
Matcher m = Pattern.compile("[\n`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。, ·、?]").matcher(text);
String newtext = m.replaceAll("").trim();
(2) 大文字小文字変換
パイソン
「Apple」と「apple」という単語は同じ用語として扱う必要があり、小文字として扱います
string = string.lower()
输入 'I believe you And you '
输出 'i believe you and you '
ジャワ
String text = text.toLowerCase()
(3) イングリッシュスライス
パイソン
中国語のスライスとは異なり、扱いにくい英単語には、独自の自然な区切り文字があります。
lsplit = lines.split()
输入 'i believe you and you '
输出 ['i', 'believe', 'you', 'and', 'you']
ジャワ
Arrays.toString(text.split(" "))
(4) ストップワードを取り除く
あまりにも一般的な単語は、ドキュメントとユーザーのニーズを照合する際にほとんど価値がなく、語彙から完全に削除する必要があります。
パイソン
「あなた」、「私」、「そして」などの非常に一般的な用語はストップ ワードと見なされます。
頻度が高すぎてどのドキュメントにも表示されないため、統計から削除されます。
en_stop = get_stop_words('en')
stopped_tokens = [i for i in token if i not in en_stop]
输入 ['i', 'believe', 'you', 'and', 'you']
输出 ['believe', 'really', 'wait']
(5)ステミング
言語の文法要件が異なるため、ドキュメントには特定の語彙の異なる形式が含まれていることがよくあります。
単語を取得するとき、その単語の他の形式を含むドキュメントも返される必要があります。
'believes' と 'believe' という単語は同じ用語と見なされるべきであり、同じ語幹として抽出します
語幹は、必ずしも文法的に正しい単語ではなく、異なる単語を同じ形にする方法にすぎません。
パイソン
p_stemmer = PorterStemmer()
texts = [p_stemmer.stem(i) for i in stopped_tokens]
输入 ['believe', 'really', 'wait', 'believes']
输出 ['believ', 'realli', 'wait', 'believ']
ジャワ
PorterStemmer stem = new PorterStemmer();
stem.setCurrent("happyness");
stem.stem();
String result = stem.getCurrent();
(6) 重複を取り除く
用語辞書を構成する用語は、単純な重複排除のために繰り返されるべきではありません
word_list = list(dict.fromkeys(word_list))
输入 ['believ', 'realli', 'wait', 'believ']
输出 ['believ', 'realli', 'wait']