機械学習 コーパス MeCab

import MeCab

# MeCabの初期化時にmecabrcのパスを明示的に指定する
tagger = MeCab.Tagger("-r /etc/mecabrc")

# 形態素解析を実行
result = tagger.parse("メイが恋ダンスを踊っている。")
print(result)
メイ	名詞,一般,*,*,*,*,*
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
恋	名詞,一般,*,*,*,*,恋,コイ,コイ
ダンス	名詞,サ変接続,*,*,*,*,ダンス,ダンス,ダンス
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
踊っ	動詞,自立,*,*,五段・ラ行,連用タ接続,踊る,オドッ,オドッ
て	助詞,接続助詞,*,*,*,*,て,テ,テ
いる	動詞,非自立,*,*,一段,基本形,いる,イル,イル
。	記号,句点,*,*,*,*,。,。,。
EOS

import MeCab

# MeCabの初期化時に辞書のパスを明示的に指定する
# tagger = MeCab.Tagger("-d /var/lib/mecab/dic/ipadic-utf8")
tagger = MeCab.Tagger("-r /etc/mecabrc -d /var/lib/mecab/dic/ipadic-utf8")
# tagger = MeCab.Tagger("-r /etc/mecabrc")

# 形態素解析を実行し、最初のノードを取得
node = tagger.parseToNode("メイが恋ダンスを踊っている。")

result = []
while node:
    # featureの最初の要素(品詞)を取得
    hinshi = node.feature.split(",")[0]
    if hinshi == "名詞":
        result.append(node.surface)
    elif hinshi in ["動詞", "形容詞"]:
        # 基本形を取得するため、featureの第7要素(0から数えて6)を取得
        result.append(node.feature.split(',')[6])
    # 次のノードへ移動
    node = node.next

print(result)

['メイ', '恋', 'ダンス', '踊る', 'いる']

from gensim.models import word2vec

# コーパスの読み込み
sentences = word2vec.Text8Corpus('./wiki_wakati.txt')

# モデルの作成(パラメータ名 'size' を 'vector_size' に変更)
model = word2vec.Word2Vec(sentences, sg=0, vector_size=100, window=5, min_count=5)

# モデルの保存
model.save("./wiki.model")
('事業', 0.7290616035461426)
('配送', 0.7178525328636169)
('サービス', 0.713886022567749)
('受託', 0.6888272762298584)
('窓口', 0.6878151297569275)
('物流', 0.6817217469215393)
('手続き', 0.6707543134689331)
('取扱い', 0.6697725653648376)
('取り扱い', 0.6633967161178589)
('請負', 0.6554899215698242)
'EOS\n'
from gensim.models import word2vec
model = word2vec.Word2Vec.load("./wiki.model")
results = model.wv.most_similar(positive=['王','女'], negative=['男'])
for result in results:
    print(result)
('女王', 0.7211963534355164)
('太子', 0.7116293907165527)
('大王', 0.6932863593101501)
('皇帝', 0.6904259324073792)
('王妃', 0.6786155104637146)
('帝', 0.6765350699424744)
('后', 0.6741808652877808)
('聖王', 0.6720561385154724)
('皇后', 0.6572687029838562)
('皇太子', 0.646443247795105)
import MeCab
from gensim.models import word2vec

#Word2Vec のmodelとMeCabの用意
model = word2vec.Word2Vec.load("./wiki.model")
tagger = MeCab.Tagger("-r /etc/mecabrc -d /var/lib/mecab/dic/ipadic-utf8")
tagger.parse("")

#渡されたテキストに含まれる各単語と「至急」の類似度を表示する
def print_emargency(text):
    print(text)
    #渡されたテキストを形態素解析
    node = tagger.parseToNode(text)
    while node is not None:
        #ストップワードを除く
        fields = node.feature.split(",")
        if fields[0] == '名詞' or fields[0] == '動詞' or fields[0] == '形容詞':
            #至急との類似度を表示する
            print(model.wv.similarity(node.surface, '至急'))
        node = node.next
    
print_emargency("PCが起動しなくなりました。急いでいます。")
print_emargency("使い方がよくわかりません。")
PCが起動しなくなりました。急いでいます。
-0.08724724
0.058667436
0.2992546
0.16962935
0.40513083
0.14123999
使い方がよくわかりません。
0.11702418
0.16344234

得られた数字を集計して、最大値や平均値で推測できる。

機械学習 コーパス ダウンロード - Google 検索
タイトルとURLをコピーしました