2016-06-21 26 views
-3

我有一個項目,其中需要從大量文章中提取引文。在這裏,引用我指的是人們所說的話,例如:Alen說「要提取的文本」。我使用NLTK來處理其他NLP相關任務,因此任何使用NLTK或任何類型的Python庫的解決方案都將非常有用。如何從文本中使用NLTK提取引文

感謝

回答

0

這有資格作爲一種模式,即你正在尋找的數據總是引號""之間。簡而言之,您可以使用regex進行模式匹配。 讓我們這個例子中she said " DAS A SDASD sdasdasd SADSD", " SA23 DSD " ASDAS "ASDAS1 3123$ %$%"

,對你的基本的例子的工作原理是正則表達式 -

list = re.findall("\".*?\"", string) 

List給我們['" DAS A SDASD SADASD SADSD"', '" SA23 DSD "', '"ASDAS1 3123$ %$%"']

這裏,.*?匹配任何字符(除換行符)和模式匹配從字面上引號(開頭\"和結尾\")。

請注意引號中的引號會打破此代碼。你不會得到預期的輸出。

+0

這會在引號之間拾取任何東西。根據你正在評估的文本,你會選擇一堆沒有報告過的垃圾......只是用引號括起來的東西就像字母「A」,「晦澀」這個詞的意思是......等等。 – Joseph

+0

我工作的前提是OP正在處理**具有有意義對話的結構化數據**,因爲OP說'我需要從大量文章中提取引文。所以我的假設是一個合理的假設。我會+1爲你添加一些好的答案。 –

1

正如MAYUR提到的,你可以做一個正則表達式拿起報價

list = re.findall("\".*?\"", string) 

你會碰到的是可以有一個是竟然出奇大量的引號之間的事情的問題之間的一切不是報價。

如果您正在學術論文,您可以在收盤後查找一個數字以獲取腳註編號。否則與非學術文章,也許你可以運行類似:

"(said|writes|argues|concludes)(,)? \".?\"" 

可以更精確,但如引用文字(引用文字風險損失的報價會引起您的問題反正,因爲他們可以包括在右引號之前有一個換行符)

至於使用NLTK,我想不出有什麼可以幫助查找「說」的同義詞,除了可能是wordnet。

相關問題