繁体   English   中英

NLP-使用spaCy在Python中提取文本

[英]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列轻松完成此操作。

如果您给出的示例是您工作中的常见示例,则可以将任务分解为以下步骤:

  1. 使用Spacy定义规则以描述句子的模式。 例如KM&L expenditure will not be frozen可以是[{"lower":{"REGEX": "^.*expenditure"}},{"lower":"not"}, {"LEMMA":"be"}, {"LOWER": "frozen"}] (我没有对其进行测试,因此请相应地进行更改)。 您可能需要编写尽可能多的规则。

  2. 使用NLTK Tokenize将段落分为句子( 请参阅示例

  3. 对于每个句子,请使用Spacy中基于规则的匹配

  4. 要提取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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM