2

我有大量多语言 html 文件,我想从中提取结构化数据。我还有大量出现在语料库中的实体名称列表(+5M)(多词:人员和组织名称、地点等),可以提供帮助。

我正在寻找一个 Python 库,它可以使用实体名称对文本进行快速标记(也许但没有必要执行其他任务,如 POS 标记和基本 NER)。结果应该可以使用简单的 REGEXP 进行搜索,例如带有标签的表达式。例如:“.+?[last_name] (is|was)(best)?[organisation_name] 的 CEO”。

我试图在 NLTK 和 CLIPS 模式中找到这个功能(pattern.search 类似)但失败了。具有此类功能的最接近的开源库是 GATE,但它是 Java 语言,对于这项任务来说似乎有点过头了。

谢谢,

达沃尔

4

1 回答 1

0

您可以从http://htql.net尝试 htql.RegEx 。以下是网站上的示例:

import htql; 
address = '88-21 64th st , Rego Park , New York 11374'
states=['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 
    'Delaware', 'District Of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 
    'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 
    'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 
    'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 
    'Oregon', 'PALAU', 'Pennsylvania', 'PUERTO RICO', 'Rhode Island', 'South Carolina', 'South Dakota', 
    'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 
    'Wyoming']; 

a=htql.RegEx(); 
a.setNameSet('states', states);

state_zip1=a.reSearchStr(address, "&[s:states][,\s]+\d{5}", case=False)[0]; 
# state_zip1 = 'New York 11374'

state_zip2=a.reSearchList(address.split(), r"&[ws:states]<,>?<\d{5}>", case=False)[0]; 
# state_zip2 = ['New', 'York', '11374']
于 2013-11-21T19:09:42.293 回答