RegEx Tokenizer для разделения текста на слова, цифры и знаки препинания - PullRequest
2 голосов
/ 07 марта 2011

Что я хочу сделать, это разбить текст на его конечные элементы.

Например:

from nltk.tokenize import *
txt = "A sample sentences with digits like 2.119,99 or 2,99 are awesome."
regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+')
['A','sample','sentences','with','digits','like','2.199,99','or','2,99','are','awesome','.']

Вы можете видеть, что это отлично работает. Моя проблема: что произойдет, если цифра находится в конце текста?

txt = "Today it's 07.May 2011. Or 2.999."
regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+') 
['Today', 'it', "'s", '07.May', '2011.', 'Or', '2.999.'] 

Результат должен быть: [«Сегодня», «это», «s», «07. Мая», «2011», «.», «Или», «2.999», «.»]

Что мне нужно сделать, чтобы получить результат выше?

1 Ответ

8 голосов
/ 07 марта 2011

Я создал шаблон, чтобы попытаться включить точки и запятые в словах, числах.Надеюсь, это поможет:

txt = "Today it's 07.May 2011. Or 2.999."
regexp_tokenize(txt, pattern=r'\w+([.,]\w+)*|\S+')
['Today', 'it', "'s", '07.May', '2011', '.', 'Or', '2.999', '.']
...