извлечь предложение с помощью Python - PullRequest
3 голосов
/ 23 октября 2010

Я хотел бы извлечь точное предложение, если в этом предложении присутствует определенное слово.Может ли кто-нибудь дать мне знать, как это сделать с Python.Я использовал concordance (), но он печатает только строки, в которых совпадает слово.

Ответы [ 3 ]

4 голосов
/ 27 октября 2010

Просто быстрое напоминание: нарушение предложения на самом деле довольно сложная вещь, есть исключения из правила периода, такие как «Мистер» или "доктор" Есть также множество предложений, заканчивающихся знаками препинания. Но есть и исключения из исключения (если следующее слово написано с заглавной буквы и не является собственным именем, доктор может закончить предложение, например).

Если вы заинтересованы в этом (это тема обработки естественного языка), вы можете проверить:
набор инструментов для естественного языка (nltk) punkt module .

1 голос
/ 23 октября 2010

Если у вас есть каждое предложение в строке, вы можете использовать find () в вашем слове и, если найдено, вернуть предложение.В противном случае вы можете использовать регулярные выражения, что-то вроде этого

pattern = "\.?(?P<sentence>.*?good.*?)\."
match = re.search(pattern, yourwholetext)
if match != None:
    sentence = match.group("sentence")

Я не проверял это, но что-то в этом роде.

Мой тест:

import re
text = "muffins are good, cookies are bad. sauce is awesome, veggies too. fmooo mfasss, fdssaaaa."
pattern = "\.?(?P<sentence>.*?good.*?)\."
match = re.search(pattern, text)
if match != None:
    print match.group("sentence")
0 голосов
/ 23 октября 2010

Датт сделал хорошую работу, ответив на это.Я просто хотел добавить пару вещей

import re

text = "go directly to jail. do not cross go. do not collect $200."
pattern = "\.(?P<sentence>.*?(go).*?)\."
match = re.search(pattern, text)
if match != None:
    sentence = match.group("sentence")

, очевидно, вам нужно будет импортировать библиотеку регулярных выражений (import re) перед началом.Вот подробное описание того, что на самом деле делает регулярное выражение (дополнительную информацию можно найти на странице библиотеки Python re )

\. # looks for a period preceding sentence.
(?P<sentence>...) # sets the regex captured to variable "sentence".
.*? # selects all text (non-greedy) until the word "go".

, ссылка на страницу ссылки библиотеки является ключевой.

...