Преобразование строковых токенов в целые числа - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь преобразовать токены предложений в целые числа.Но это дает мне поплавки.

from nltk.tokenize import word_tokenize
from gensim.models import Word2Vec

sometext = "hello how are you doing?"

tokens = word_tokenize(sometext)
model = Word2Vec([tokens], min_count=1, size=1)

когда я это сделаю,

print(model["hello"])

это даст мне,

[-0.3843384]

Я хочу, чтобы это было положительное целое число.

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Нет существенной причины использовать Word2Vec для этого.Задача Word2Vec состоит в том, чтобы сопоставить слова с многомерными «плотными» векторами со многими координатами с плавающей точкой.

Хотя Word2Vec и сканирует ваш тренировочный корпус на наличие всех уникальных слов, и присваивает каждому уникальному слову целую позицию в его внутренних структурах данных, вы обычно не сделаете модель только одномерной (size=1), или спросите модель для целочисленного слота слова (внутренняя деталь реализации).

Если вам просто нужно сопоставление (строковое слово) -> (int id), класс gensim Dictionary может это сделать.См .:

https://radimrehurek.com/gensim/corpora/dictionary.html

from nltk.tokenize import word_tokenize
from gensim.corpora.dictionary import Dictionary

sometext = "hello how are you doing?"

tokens = word_tokenize(sometext)
my_vocab = Dictionary([tokens])

print(my_vocab.token2id['hello'])

Теперь, если на самом деле есть веская причина для использования Word2Vec - например, требуются многомерные векторы для увеличения словарного запаса, обученного на значительномколичество различного текста - и ваша реальная потребность в том, чтобы знать его внутренние целочисленные слоты для слов, вы можете получить доступ к ним через внутренний * 10120 * словарь vocab свойства:

print(model.wv.vocab['hello'].index)
1 голос
/ 18 июня 2019

Вы можете использовать gensim corpora.Dictionary для создания словаря и идентификаторов для токенов.

from gensim import corpora
dictionary = corpora.Dictionary([tokens])
print(dictionary)
Dictionary(6 unique tokens: ['?', 'are', 'doing', 'hello', 'how']...)
token2id
print(dictionary.token2id)
{'?': 0, 'are': 1, 'doing': 2, 'hello': 3, 'how': 4, 'you': 5}
dictionary.token2id['hello']
3 
...