Как избежать токенизации слов с подчеркиванием? - PullRequest
4 голосов
/ 05 июля 2019

Я пытаюсь токенизировать свои тексты с помощью функции "nltk.word_tokenize()", но это разделит слова, связанные с "_".

Например, текст "A,_B_C! is a movie!" будетразделить на:

['a', ',', '_b_c', '!', 'is','a','movie','!']

Результат, который я хочу получить:

['a,_b_c!', 'is', 'a', 'movie', '!']

Мой код:

import nltk

text = "A,_B_C! is a movie!"
nltk.tokenize(text.lower())

Любая помощь будет признательна!

1 Ответ

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

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

[word for sublist in [word_tokenize(x) if '_' not in x else [x] 
                       for x in text.lower().split()] for word in sublist] 

Выход ['a,_b_c!', 'is', 'a', 'movie', '!']

l = [word_tokenize(x) if '_' not in x else [x] for x in text.lower().split()] вернет список списка, работающий word_tokenize только для слов, которые не имеют _.

[word for sublist in l for word in sublist] часть заключается в сведении списка в один список.

...