[英]NLP - text extraction in Python using spaCy
我使用Python和spaCy作為我的NLP庫。 我是NLP工作的新手,希望能提供一些指導,以便從文本中提取表格信息。 我的目標是找到凍結或不凍結哪種類型的費用。 任何指導將不勝感激。
TYPE_OF_EXPENSE FROZEN? NOT_FROZEN?
purchase order frozen null
capital frozen null
consulting frozen null
business meetings frozen null
external hires frozen null
KM&L null not frozen
travel null not frozen
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u'Non-revenue-generating purchase order expenditures will be frozen. All capital
related expenditures are frozen effectively for Q4. Following spending categories
are frozen: Consulting, (including existing engagements), Business meetings.
Please note that there is a hiring freeze for external hires, subcontractors
and consulting services. KM&L expenditure will
not be frozen. Travel cost will not be on ‘freeze’.)
我的最終目標是將所有此表提取到excel文件中。 即使您能為上述幾個類別提供建議,我也將深表感謝。 提前非常感謝您。
幾個問題:類別是否已預定義,並且會保持這種方式嗎? 如果是這樣,您可以僅使用這些單詞來構建一個小的詞匯表並進行處理。 第二件事是首先進行基本的預處理,例如大小寫調整等。
然后使用某種類型的句子標記器將您的輸入分成多個句子。 完成此操作后,將這些句子拆分為標記,nltk將提供一個不錯的標記生成器,您可以使用它定義短語,以便將紐約標記為new_york,依此類推。 對每個句子進行標記后,如果您在句子中找到匹配的標記,則可以使用基於窗口的方法。在該句子中,您查找前后有4個標記,以找到凍結單詞的否定詞。 因此,對於一個句子,您可以獲得諸如
[All,capital,related,expenditures,are,frozen,effectively,for,Q4]
這會同時匹配凍結關鍵字和大寫關鍵字。 只需檢查凍結前后的窗口大小是否為負,如果發現凍結的標記大寫為False,否則將其標記為true,因為可以使用二進制true / false列輕松完成此操作。
如果您給出的示例是您工作中的常見示例,則可以將任務分解為以下步驟:
使用Spacy定義規則以描述句子的模式。 例如KM&L expenditure will not be frozen
可以是[{"lower":{"REGEX": "^.*expenditure"}},{"lower":"not"}, {"LEMMA":"be"}, {"LOWER": "frozen"}]
(我沒有對其進行測試,因此請相應地進行更改)。 您可能需要編寫盡可能多的規則。
使用NLTK Tokenize將段落分為句子( 請參閱示例 )
對於每個句子,請使用Spacy中基於規則的匹配
要提取TYPE_OF_EXPENSE
,請根據匹配的規則,通過對匹配語句中從前或后的字符進行計數來獲取子字符串KM&L
。 例如,在此句子中KM&L expenditure will not be frozen
,您可以從后面進行計數,因為規則中定義了expenditure will not be frozen
,並且字符串的長度是固定的。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.