RegEx Tokenizer для разделения текста на слова, цифры и знаки препинания

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

Например:

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.May', '2011','.', 'Или', '2,999','.']

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


person Sv3n    schedule 06.03.2011    source источник
comment
Не import *. Плохая практика.   -  person atp    schedule 24.07.2012


Ответы (1)


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

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', '.']
person samplebias    schedule 06.03.2011
comment
Спасибо, это именно то, что я хочу. :-) - person Sv3n; 07.03.2011