2016-08-27 3 views
1

Я хочу разделить строку на запятую и/или периоды в nltk. Я пробовал с sent_tokenize(), но он отделяется только от периодов.Как разбить строку на запятую или периоды в nltk

Я также попробовал этот код

from nltk.tokenize.punkt import PunktSentenceTokenizer, PunktLanguageVars 
ex_sent = "This is an example showing sentence filtration.This is how it is done, in case of Python I want to learn more. So, that i can have some experience over it, by it I mean python." 
class CommaPoint(PunktLanguageVars): 
    sent_end_chars = ('.','?','!',',') 
tokenizer = PunktSentenceTokenizer(lang_vars = CommaPoint()) 
n_w=tokenizer.tokenize(ex_sent) 
print n_w 

Выход для кода выше является

['This is an example showing sentence filtration.This is how it is done,' 'in case of Python I want to learn more.' 'So,' 'that i can have some experience over it,' 'by it I mean python.\n'] 

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

Я хочу, чтобы выход в

['This is an example showing sentence filtration.' 'This is how it is done,' 'in case of Python I want to learn more.' 'So,' 'that i can have some experience over it,' 'by it I mean python.'] 

Image of the code

+0

Не могли бы вы уточнить свой вопрос? Приведите несколько примеров входов и желаемых результатов и попробуйте сказать, что вы пробовали. Взгляните на http://stackoverflow.com/help/how-to-ask – alvas

+0

привет, это мой первый раз в stackoverflow. Я пытался объяснить свою проблему, надеюсь, что вы ответите мне. Спасибо –

+0

привет alvas я надеюсь, что вы можете помочь мне на этот раз .. –

ответ

3

Как о чем-то более простом с re:

>>> import re 
>>> sent = "This is an example showing sentence filtration.This is how it is done, in case of Python I want to learn more. So, that i can have some experience over it, by it I mean python." 
>>> re.split(r'[.,]', sent) 
['This is an example showing sentence filtration', 'This is how it is done', ' in case of Python I want to learn more', ' So', ' that i can have some experience over it', ' by it I mean python', ''] 

Чтобы сохранить разделитель, вы можете использовать группу:

>>> re.split(r'([.,])', sent) 
['This is an example showing sentence filtration', '.', 'This is how it is done', ',', ' in case of Python I want to learn more', '.', ' So', ',', ' that i can have some experience over it', ',', ' by it I mean python', '.', ''] 
+0

Большое спасибо alvas. но в этом случае вы убедитесь, что оно разделяет предложение, но также извлекает запятую и полную остановку, которую я хочу сохранить. Также есть ли способ, который я мог бы сделать в nltk –

+0

Нетрудно поставить его запятыми и fullstops назад; Я бы предположил, что вы используете встроенные библиотеки python как можно больше, если оно дает вам желаемый результат. И если вы действительно должны использовать nltk, общие модели nlp обычно будут работать с нормально форматированным текстом новостей. – alvas