機械学習技術 人工知能技術 デジタルトランスフォーメーション技術 サポートベクトルマシン 自然言語処理技術 Clojure
自然言語処理で不必要な単語を除くstopword除去のClojureでの実装について。
単語ベクトルにした場合は以下のような単語辞書を作成し
( "5"
"①"
"④"
"30"
"②"
"③"
"2"
"⑤"
"⑥"
...)
以下のようにremove関数を利用して単語を削除する。
(def ex-stopword
->> raw-word-list
(remove (set (read-string (slurp "data/stopword.txt")))))
また以下のようなアプローチもある。
(defn load-stopwords [filename]
(with-open [r (io/reader filename)]
(set (doall (line-seq r)))))
(def is-stopword (load-stopwords "stopwords/english"))
(def tokens
(map #(remove is-stopword (normalize (tokenize %)))
(get-sentences
"I never saw a Purple Cow.
I never hope to see one.
But I can tell you, anyhow.
I'd rather see than be one.")))
上記のコードは、Clojure Data Analysis Cookbook 2nd より転機した。
参考までにpythonでの実装を以下に記す。
words = ['this', 'is', 'a', 'pen']
stop_words = ['is', 'a']
changed_words = [word for word in words if word not in stop_words]
print(changed_words)
コメント
[…] このようにして抽出した単語から、不要な単語を抜き出したり(stop-word除去)、ベクトル化(one-hot-vector)を行うことで機械学習が行えるようになる。 […]
[…] ストップワードの除去。冠詞、前置詞、接続詞などとして認識されるトークン(通常はtoやaなどの単語)は、マッチングのための無意味な(空虚な)単語とみなされるため、破棄するようマークされる。例えば、collection of articleはcollection articleとなる。(参考:clojureでの実装) […]
[…] Clojureでのstopword除去 Clojureでのストップワード除去 […]
[…] Clojureでのstopword除去 Clojureでのストップワード除去 […]
[…] Clojureでのstopword除去 Pythonでのストップワード除去 […]