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 検索