Geolocation 基于词典的NLTK标记器

Geolocation 基于词典的NLTK标记器,geolocation,nlp,nltk,tagging,stanford-nlp,Geolocation,Nlp,Nltk,Tagging,Stanford Nlp,我想用NLTK和Stanford NLP在文本中标记位置字符串 我正在寻找NLTK/Stanford NLP的字典查找标记器,因为到目前为止我还没有找到任何字典查找方法 一种方法是使用regexptager(NLTK)并提供其中的每个位置字符串,但它可能会变慢 我不需要做任何语义分析,只需要根据我的位置字典标记位置 想法?您可以使用UnigramTagger: #/usr/bin/env蟒蛇2 从nltk.tag.sequential导入UnigramTagger 从nltk.tokenize导

我想用NLTK和Stanford NLP在文本中标记位置字符串

我正在寻找NLTK/Stanford NLP的字典查找标记器,因为到目前为止我还没有找到任何字典查找方法

一种方法是使用regexptager(NLTK)并提供其中的每个位置字符串,但它可能会变慢

我不需要做任何语义分析,只需要根据我的位置字典标记位置


想法?

您可以使用
UnigramTagger

#/usr/bin/env蟒蛇2
从nltk.tag.sequential导入UnigramTagger
从nltk.tokenize导入单词\u tokenize,发送\u tokenize
text='我参观了巴黎和波尔多。不是洛杉矶的
地点=[('Paris','LOC'),('Bordeaux','LOC'),('France','LOC'),
('Los Angeles','LOC')]]
位置\标记器=UnigramTagger(位置)
对于sent_tokenize(文本)中的句子:
标记=单词\标记化(句子)
打印(位置标记器标记(令牌))
印刷品:

[('I',无),('visted',无),('Paris','LOC'),('and',无),
(‘波尔多’、‘LOC’、(‘没有’、‘没有’、‘但是’、‘没有’、‘没有’、‘没有’、‘没有’),
(“洛杉矶”,无)、(“洛杉矶”,无)]

如果要标记洛杉矶等多单词位置,则需要更好的标记器。

如果只需要从字典中查找,则htql.RegEx()可能是一个很好的选择。以下是来自以下方面的示例:

导入htql;
地址='88-21纽约雷戈公园64街11374'
州=[“阿拉巴马州”、“阿拉斯加”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”、“科罗拉多州”、“康涅狄格州”,
“特拉华州”、“哥伦比亚特区”、“佛罗里达州”、“乔治亚州”、“夏威夷州”、“爱达荷州”、“伊利诺伊州”、“印第安纳州”,
“爱荷华州”、“堪萨斯州”、“肯塔基州”、“路易斯安那州”、“缅因州”、“马里兰州”、“马萨诸塞州”、“密歇根州”,
“明尼苏达州”、“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”、“新罕布什尔州”,
“新泽西州”、“新墨西哥州”、“纽约州”、“北卡罗来纳州”、“北达科他州”、“俄亥俄州”、“俄克拉荷马州”,
“俄勒冈州”、“帕劳州”、“宾夕法尼亚州”、“波多黎各州”、“罗德岛州”、“南卡罗来纳州”、“南达科他州”,
“田纳西州”、“德克萨斯州”、“犹他州”、“佛蒙特州”、“弗吉尼亚州”、“华盛顿州”、“西弗吉尼亚州”、“威斯康星州”,
“怀俄明州”];
a=htql.RegEx();
a、 setNameSet('states',states);
state_zip1=a.reSearchStr(地址“&[s:states][,\s]+\d{5}”,case=False)[0];
#州1=‘纽约11374’
state_zip2=a.reSearchList(address.split(),r“&[ws:states]?”,case=False)[0];
#州2=['纽约','纽约','11374']

您可以使用参数:useindex=True返回匹配的位置

你能告诉我你的位置词典是什么样子的吗?谢谢。正如你所说的,棘手的部分是标记bigram和trigram。您建议使用什么标记器?如果您只需要将“Los”和“Angeles”分组(例如),最简单的方法是在应用unigram标记器后自己进行分组,但它实际上无法扩展到其他改进,例如处理歧义或其他类型的标记。
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']