[PYTHON] Word2Vec mit BoUoW

Mit natürlicher Sprachverarbeitung Sprachvektorisierung, Cos Ähnlichkeit, Teilung, maschinelles Lernen ... Ich habe viele Interessen und versuche es, aber ich bin immer frustriert auf dem Weg. .. .. ..

Selbst wenn ich frustriert bin, möchte ich es noch einmal schreiben, und ich denke darüber nach, es als Memorandum für diese Zeit zu schreiben.

Beginnen wir damit, warum Sie BUW verwenden müssen. Weil es vage ist, aber ich habe verschiedene Dinge mit Jupyter Notebook unter Windows 10 und Anaconda gemacht, aber Mecab hat nicht gut funktioniert. .. .. .. Ich habe vergessen, wie es nicht funktioniert hat. .. Trotzdem erinnere ich mich nur daran, dass ich es nicht verstanden habe.

Vielleicht hat Mecab-Python für Windows nicht gut funktioniert.

Im Netz Der Quellcode von Mecab-Python für Linux funktioniert möglicherweise, wenn Sie ihn für Windows neu schreiben und kompilieren! !! Selbst wenn ich die Informationen erhalte, weiß ich nicht, wie ich sie für Windows umschreiben soll. .. .. ..

Ist es diesmal auch frustriert? .. .. .. .. ..

Ich sah einen Artikel, als ich immer weniger bereit war, vor einem Computer zu sitzen, während ich über solche Dinge nachdachte.

「bash on ubuntu on Windows」

Gut. Darüber hinaus scheint es eine Standardfunktion von Windows 10 zu sein. Ich fühle mich motivierter, wieder vor dem Computer zu sitzen. In diesem Fall kann Mecab-Python für Linux so verwendet werden, wie es ist! !!

Ich möchte die Ergebnisse verschiedener Dinge wie diese einfügen.

Im Moment ist es mir unten gelungen, also vergessen Sie nicht, den Code einzufügen. Die Umgebung ist wie folgt. ・ 64-Bit-Windows10-Creative-Update ・ Bash unter Ubuntu unter Windows ・ Jupyter-Notizbuch (anaconda3-4.4.0) ・ Python3.6

Darüber hinaus verwenden die meisten von ihnen den auf der Seite "@ enta0701" eingefügten Code als Referenz. Vielen Dank_(..) http://qiita.com/enta0701/items/87cbe783aeb44ddf41ce

Ich konnte nicht feststellen, ob es daran lag, dass ich versuchte, es auf BUW anstelle von Mac auszuführen, oder ob es etwas anderes gab, aber mit dem ursprünglichen Quellcode konnte ich die ".txt" -Datei nicht gut lesen.

(Start des Postskripts 2017/11/16) Es fühlte sich so an, als würde der Bereich um " __ file __`` `" nicht gut funktionieren. (Ende des Postskripts)

(Nachskriptstart 2017/11/19) Das Problem, dass ein Fehler in " file``` "auftritt, wurde wie folgt behoben. https://qiita.com/Chizizii/items/42a78754aa2fe6b6a29f (Ende des Postskripts)

Nachdem ich verschiedene Dinge ausprobiert habe, frage ich mich, ob der Inhalt der ".txt" -Datei nicht funktioniert, wenn er auf Japanisch ist. Danach habe ich versucht zu glauben, dass es mit UTF-8 usw. zusammenhängt, aber es hat nicht funktioniert. .. ..

Indem ich ".txt" in die tiefe Hierarchie von Windows einfügte, fragte ich mich, ob der Pfad zu lang war, und gab es auf, den dynamischen Pfad, die relativ flache Hierarchie ".txt" an der durch den festen Pfad angegebenen Stelle zu erhalten Ich beschloss, die Datei zu legen. Daneben habe ich auch einige Dinge zum Importieren geschnitten.

Also habe ich es geschafft, es zum Laufen zu bringen! !!

Außerdem verwenden wir es fast so wie es ist, einschließlich der einzugebenden Textdaten.

Bevor ich es vergesse, werde ich nur den Quellcode einfügen.

Wenn Sie etwas Seltsames finden, weisen Sie bitte darauf hin. Ich habe nicht viel Wissen. ..

# -*- coding: utf-8 -*-
#Sprachspezifikation py3
#Referenzquelle http://qiita.com/enta0701/items/87cbe783aeb44ddf41ce

import os
import sys
import numpy as np
import MeCab
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

input_text = open('/mnt/c/BOW/documents.txt', 'r').read()
print(input_text)

documents = input_text.split("|")

def words(text):
    out_words = []
    tagger = MeCab.Tagger('-Ochasen')
    tagger.parse('')
    node = tagger.parseToNode(text)

    while node:
        word_type = node.feature.split(",")[0]
        if word_type in ["Substantiv"]:
            out_words.append(node.surface)
        node = node.next
    return out_words

def vecs_array(documents):
    docs = np.array(documents)
    vectorizer = TfidfVectorizer(
        analyzer=words,
        stop_words='|',
        min_df=1,
        token_pattern='(?u)\\b\\w+\\b'
    )
    vecs = vectorizer.fit_transform(docs)
    return vecs.toarray()

tag = ["Artikel A.", "Artikel B.", "Artikel C.", "Artikel D.", "Artikel E.", "Artikel F."]
cs_array = cosine_similarity(vecs_array(documents), vecs_array(documents))

for i, cs_item in enumerate(cs_array):
    print("[" + tag[i] + "]")
    cs_dic = {}
    for j, cs in enumerate(cs_item):
        if round(cs - 1.0, 5) != 0:
            cs_dic[tag[j]] = cs
    for k, v in sorted(cs_dic.items(), key=lambda x:x[1], reverse=True):
        print("\t" + k + " : " + str(v))

(Ergänzung) "py3" wurde als Sprachspezifikation zum Quellcodeteil hinzugefügt. Danke, Shiracamus.

das ist alles.

Recommended Posts

Word2Vec mit BoUoW
Word2vec mit Theano + Keras implementiert
Emotionsanalyse von Python (word2vec)
word2vec
Ich habe Word2Vec mit Pytorch gemacht
Überprüfen Sie "Fucking Deca" + "Rashomon" mit word2vec
Klassifizieren von SNLI-Datasets mit Word2Vec + LSTM
Python2 + word2vec
Verstehe Word2Vec
Einfach! Verwenden Sie gensim und word2vec mit MAMP.
100 Sprachverarbeitung Knock-90 (mit Gensim): Lernen mit word2vec
Verwenden Sie Python und word2vec (gelernt) mit Azure Databricks
"Learning word2vec" und "Visualisierung mit Tensorboard" auf Colaboratory