При первом использовании word2vec
файл, с которым я работаю, имеет формат XML
. Я хочу перебрать патенты, чтобы найти каждый заголовок, затем применить word2vec
, чтобы увидеть, есть ли похожие слова (для обозначения похожих заголовков).
До сих пор я анализировал XML-файл, используя дерево элементов для получения каждого заголовка, затем применил sent_tokenizer
с последующим твитом tokenizer
, чтобы получить список предложений, в которых каждое слово было токенизировано (не уверен, что это было лучший метод). Затем я поместил токенизированные предложения в мою модель word2vec
и проверил одним словом, чтобы увидеть, вернул ли он вектор. Кажется, это работает только для слова в первом предложении. Я не уверен, что это признание всех предложений?
import numpy as np
import pandas as pd
import gensim
import nltk
import xml.etree.ElementTree as ET
from gensim.models.word2vec import Word2Vec
from nltk.tokenize import word_tokenize
from nltk.tokenize import sent_tokenize
from nltk.corpus import stopwords
from nltk.tokenize import TweetTokenizer, sent_tokenize
tree = ET.parse('6785.xml')
root = tree.getroot()
for child in root.iter("Title"):
Patent_Title = child.text
sentence = Patent_Title
stopWords = set(stopwords.words('english'))
tokens = nltk.sent_tokenize(sentence)
print(tokens)
tokenizer_words = TweetTokenizer()
tokens_sentences = [tokenizer_words.tokenize(t) for t in tokens]
#print(tokens_sentences)
model = gensim.models.Word2Vec(tokens_sentences, min_count=1,size=32)
words = list(model.wv.vocab)
print(words)
print(model['Solar'])
Я ожидал бы, что он определит слово «солнечный» в предложении и распечатает вектор, тогда я смогу найти похожие слова. Я получаю error
:
Слово «Солнечный» отсутствует в словаре »