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のチュートリアルに沿って勉強を開始します。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.