Классификация текста с двумя словами - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь извлечь некоторую ключевую информацию, используя NLTK и слово tokenization в рекламных объявлениях.

Например: «Максимальная вместимость комнаты - 800 человек. Курение запрещено, дети старше 12 лет не допускаются».. "

Мой вопрос: - (максимальная вместимость) имеет значение, отличное от вместимости.- Курение не отличается от курения.

Как я могу токенизировать составные слова для анализа?Я не хочу прерывать [«нет», «курить»]. Мне нужен токен [«Не курить»]

word_tokenize(text)

Кроме того, когда я токенизирую и удаляю стоп-слова, я теряю отрицательныезначение слов.

1 Ответ

0 голосов
/ 12 марта 2019

Я думаю, что вы ищете Ngrams NLTK

from nltk import ngrams

text = "The room has max capacity of 800 people no smoking allowed no children above 12 yr old ..."

pairs = ngrams(text.split(), 2) # change the 2 here to however many words you want in each group

for pair in pairs:
    print(pair)

> ('The', 'room')
('room', 'has')
('has', 'max')
('max', 'capacity')
('capacity', 'of')
('of', '800')
('800', 'people')
('people', 'no')
('no', 'smoking')
('smoking', 'allowed')
('allowed', 'no')
('no', 'children')
('children', 'above')
('above', '12')
('12', 'yr')
('yr', 'old')
('old', '...')

Надеюсь, это поможет

Edit:

Если вы собираетесь использовать TF-IDF, я могу порекомендовать sklearn.feature_extraction.text.TfidfVectorizer с параметром ngram_range. ngram_range=(2, 2) даст вам пары, которые вы ищете, то есть вам не нужно использовать код выше перед рукой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...