Clojureでのstopword除去

機械学習技術 人工知能技術 デジタルトランスフォーメーション技術  サポートベクトルマシン 自然言語処理技術 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)

コメント

  1. […] このようにして抽出した単語から、不要な単語を抜き出したり(stop-word除去)、ベクトル化(one-hot-vector)を行うことで機械学習が行えるようになる。 […]

  2. […] ストップワードの除去。冠詞、前置詞、接続詞などとして認識されるトークン(通常はtoやaなどの単語)は、マッチングのための無意味な(空虚な)単語とみなされるため、破棄するようマークされる。例えば、collection of articleはcollection articleとなる。(参考:clojureでの実装) […]

  3. […] Clojureでのstopword除去 Clojureでのストップワード除去 […]

  4. […] Clojureでのstopword除去 Clojureでのストップワード除去 […]

  5. […] Clojureでのstopword除去 Pythonでのストップワード除去 […]

タイトルとURLをコピーしました