使用巨大的实体名称列表使用Python进行信息提取

时间:2013-11-19 21:41:06

标签: python regex text-mining information-extraction

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

我正在寻找一个可以使用实体名称快速标记文本的Python库(可能但不是必需的其他任务,如POS标记和基本NER)。结果应该可以使用简单的REGEXP进行搜索,例如用标签扩充的表达式。例如:“。+?[last_name](是|是)(最好)?[organisation_name]的首席执行官。”

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

谢谢,

达沃尔

1 个答案:

答案 0 :(得分: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']