Edited at

gensim勉強:0.準備など

More than 1 year has passed since last update.


1. 背景

自社ソフトの問い合わせ業務を効率化したい。

→過去に類似する問い合わせがある場合、非常に参考になる。

 →キーワードで探すのが面倒・・

  →自動的に取得できれば、効率が上がるのでは?

   →gensimってライブラリがあったな・・勉強してみよう!!


2. 環境の準備について

以下のリンクを参考に環境を構築しました。

非常にわかりやすく、ありがたいです。


3. 日本語の分かち書きについて

gensimのチュートリアルでは、英語の文書が使用されています。これを日本語で実施するためには、文書を単語で区切る分かち書きを実施する必要があります。

quitaのとある記事を参考※に、MECABで実装してみました。

※申し訳ありませんが、作成時に参考にした記事を発見できていません・・発見次第、該当記事について記載します。


analysisClass.py

# 分かち書きクラス

import unicodedata
import MeCab

class AnalysisClass:

__mecab = MeCab.Tagger("mecabrc -d /lib/mecab/dic/mecab-ipadic-neologd")

# 一つの文章を分かち書きして返す
def get_word(content):
return [token for token in AnalysisClass.__tokenize(content)]

# 分かち書き処理
def __tokenize(text):
node = AnalysisClass.__mecab.parseToNode(text)
while node:
# 簡易的なチェックを通過した単語のみ取得
if AnalysisClass.__tokenize_check(node):
# 正規化した値を返す
yield unicodedata.normalize('NFKC', node.surface.lower())
node = node.next

# 簡易的なチェック
def __tokenize_check(node):

# 名詞 かつ 数値でない かつ 2文字以上
if node.feature.split(',')[0] == '名詞' \
and not node.surface.lower().isdigit() \
and len(node.surface.lower()) >= 2:
return True
else:
return False


こんな感じで動きます。


testClass.py


from analysisClass import Analysis
texts = Analysis.get_word("私の名前は何でしょう?")
print(texts) # ['私', '名前', '何']

では、次回からgensimのチュートリアルに沿って勉強を開始します。