Как шаблон Tokenizer работает с NLTK - PullRequest
0 голосов
/ 13 октября 2019

У меня есть набор данных, который состоит из набора текстов. Эти тексты должны быть очищены, поскольку они являются выдержками из форума Reddit или Twitter .

Идея состоит в том, чтобы сохранить только основные слова из этих текстов. Например, я хотел бы не учитывать числа, слова, в которых есть символ «_», и слова, содержащие в себе числа.

У меня есть ограничение на использование только NLTKбиблиотека, и, конечно же, Numpy.

Так что я думаю, что я должен использовать токенизатор из этой библиотеки для очистки моих данных, но мне нужна документация / помощь, чтобы понять, как определить шаблон для такой очистки.

Кто-нибудь может мне помочь, пожалуйста?

До сих пор я пробовал этот кусок кода:

tokenizer1 = RegexpTokenizer('\d+|\d')
tokenizer2 = RegexpTokenizer('\w+')

Что я понимаю:

tokenizer1: учитывает только цифры,

tokenizer2: рассматривает строки до следующего пробела, поэтому он по-прежнему включает числа.

Моя идея заключалась в том, чтобы сделать разницу между результатом tokenizer1 и tokenizer2, чтобы удалить числа.

Это работает, но я не знаю, как управлять более сложными аспектами, такими какне считая слова, содержащие цифры.

1 Ответ

0 голосов
/ 14 октября 2019

Почему бы не использовать стандартный токенайзер слова, а затем отфильтровать токены следующим образом:

import nltk
s = "some words contain numbers for example af345ed and l00p."
tokens = nltk.word_tokenize(s)

def isWordContainingNumber(w):
    if any([c.isdigit() for c in w]) and any([c.isdigit() for c in w]):
        return(True)
    return(False)

print([t for t in tokens if isWordContainingNumber(t)])
#['af345ed', 'l00p']
print([t for t in tokens if not isWordContainingNumber(t)])
#['some', 'words', 'contain', 'numbers', 'for', 'example', 'and', '.']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...