[PYTHON] Holen Sie sich ähnliche Beiträge mit Doc2Vec

Verwenden Sie den Livedoor News Corpus. Vorbereitet mit der folgenden Docker-Datei.

Dockerfile


FROM shwld/mecab-python

WORKDIR /usr/data
RUN wget http://www.rondhuit.com/download/ldcc-20140209.tar.gz \
    && tar xvfz ldcc-20140209.tar.gz
WORKDIR /usr/src

Lesen Sie die Datei und bereiten Sie die Trainingsdaten vor

Verwenden Sie gemsim.

from os import listdir, path
import MeCab
from gensim.models.doc2vec import Doc2Vec
from gensim.models.doc2vec import LabeledSentence

mecab = MeCab.Tagger('-Owakati -d /usr/lib/mecab/dic/mecab-ipadic-neologd')

dirs = [{'key':i, 'label':path.join('../data/text', x)} for i, x in enumerate(listdir('../data/text')) if not x.endswith('.txt')]
dir_docs = [[path.join(x['label'], y), x['label']] for x in dirs for i, y in enumerate(listdir(x['label']))]

training_docs = []
for idx, (dir_doc) in enumerate(dir_docs):
    text = ''
    for line in open(dir_doc[0], 'r'):
        if (line is ''):
            continue

        text += mecab.parse(line)

    training_docs.append(LabeledSentence(words=text, tags=[dir_doc[0]]))

model = Doc2Vec(documents=training_docs, min_count=1, dm=0)

Geben Sie ein Dokument ein, um ein ähnliches Dokument zu erhalten

print(open('../data/text/dokujo-tsushin/dokujo-tsushin-4842348.txt').read())

print(model.docvecs.most_similar('../data/text/dokujo-tsushin/dokujo-tsushin-4842348.txt'))

Sie können ein Ergebnis wie dieses erhalten

[('../data/text/dokujo-tsushin/dokujo-tsushin-4887920.txt', 0.8448764085769653), ('../data/text/dokujo-tsushin/dokujo-tsushin-6083306.txt', 0.7008811831474304), ('../data/text/livedoor-homme/livedoor-homme-5297934.txt', 0.6486650109291077), ('../data/text/dokujo-tsushin/dokujo-tsushin-4799908.txt', 0.6451865434646606), ('../data/text/dokujo-tsushin/dokujo-tsushin-5927658.txt', 0.6374314427375793), ('../data/text/dokujo-tsushin/dokujo-tsushin-6443618.txt', 0.627821147441864), ('../data/text/dokujo-tsushin/dokujo-tsushin-5453372.txt', 0.6207228899002075), ('../data/text/dokujo-tsushin/dokujo-tsushin-6661458.txt', 0.6123473644256592), ('../data/text/dokujo-tsushin/dokujo-tsushin-5665838.txt', 0.6056432723999023), ('../data/text/dokujo-tsushin/dokujo-tsushin-6624494.txt', 0.6007457971572876)]

Es wird in der Reihenfolge der Ähnlichkeit ausgegeben. Als ich das ähnlichste sah, war es genau das gleiche.

Schauen Sie sich den Inhalt so an.

print(open('../data/text/dokujo-tsushin/dokujo-tsushin-4887920.txt').read())

Recommended Posts

Holen Sie sich ähnliche Beiträge mit Doc2Vec
Holen Sie sich AKB48 Google+ Beiträge
Holen Sie sich GitHub-Informationen mit PyGithub
Abrufen von Amazon-Daten mit Keep API # 1 Abrufen von Daten
Versuchen Sie, Statistiken mit e-Stat abzurufen
Holen Sie sich Daten von Twitter mit Tweepy
Holen Sie sich den Dateipfad mit Pathlib