Gensim Word2Vec Словарь: нечеткий вывод - PullRequest
0 голосов
/ 04 июля 2019

Я начинаю знакомиться с Word2Vec, но борюсь с проблемой и не могу найти что-то похожее ... Я хочу использовать gensims Word2Vec в импортированном PDF-документе (книге).Для импорта я использовал PyPDF2 и сохранил всю книгу в виде списка.Кроме того, я использовал gensims simple_preprocess для предварительной обработки данных.До сих пор это работало, я получил следующий вывод:

text=['schottky','diode','semiconductors',...]

Итак, я попытался использовать Word2Vec:

from gensim.models import Word2Vec
model=Word2Vec(text, size=100, window=5, min_count=5, workers=4)
words=list(model.wv.vocab)

, но вывод был таким:

print(words)
['c','h','t','k','d',...]

Я ожидал также те же слова, что и в текстовом списке, а не только некоторые символы.Когда я пытался найти отношения между словами (например, «schottky» и «diode»), я получил сообщение об ошибке, что ни одно из этих слов не включено в словарь.

Сначала я подумал, что импорт неправильный, но я получил тот же результат с textract вместо PyPDF2.

Кто-то знает, в чем проблема?Спасибо за вашу помощь!

Приложение:

Импорт книги

content_text = [] number_of_inputs = len (os.listdir (путь))

    file_to_open=path
open_file=open(file_to_open,'rb')
read_pdf=PyPDF2.PdfFileReader(open_file)
number_of_pages=read_pdf.getNumPages()
page_content=""
for page_number in range(number_of_pages):
    page = read_pdf.getPage(page_number)
    page_content += page.extractText()
content_text.append(page_content)

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Word2Vec требует в качестве параметра sentences обучающий корпус, который является:

  • итеративной последовательностью (такой как список)
  • , где каждый элемент сам является спискомof string-tokens

Если вы укажете только список строк, каждая строка будет выглядеть как список из одного символа, в результате чего вы получите все однобуквенные слова, которые вывидишь.

Итак, используйте список списков слов, например:

[
 ['schottky','diode','semiconductors'],
]

(Обратите внимание, что вы обычно не получите интересных Word2Vec результатов на крошечной игрушкеразмерные наборы данных, состоящие из нескольких текстов и от нескольких десятков до сотен слов. Вам нужно много тысяч уникальных слов из множества десятков контрастных примеров каждого слова, чтобы вызвать полезные словосочетания, известные как Word2Vec.)

0 голосов
/ 04 июля 2019

Вместо
text=['schottky','diode','semiconductors']

Используйте это
text=[['schottky','diode','semiconductors']]

Дополнительная информация: Gensim word2vec

...