10

从自由文本中提取位置的推荐方法是什么?

我能想到的是使用正则表达式规则,如“words ... in location”。但是还有比这更好的方法吗?

我还可以考虑使用带有国家和城市名称的查找哈希表,然后将文本中提取的每个标记与哈希表中的标记进行比较。

有人知道更好的方法吗?

编辑:我正在尝试从推文文本中提取位置。因此,大量推文的问题也可能会影响我对方法的选择。

4

3 回答 3

11

所有基于规则的方法都将失败(如果您的文本真的“免费”)。这包括正则表达式、上下文无关语法、任何类型的查找......相信我,我以前去过那里:-)

这个问题称为命名实体识别。位置是研究最多的 3 个课程之一(包括人员和组织)。斯坦福 NLP 有一个非常强大的开源 Java 实现:http: //nlp.stanford.edu/software/CRF-NER.shtml

您可以轻松找到其他编程语言的实现。

于 2013-07-20T16:46:06.270 回答
1

将所有有效位置放入排序列表中。如果您打算比较不区分大小写,请确保您的列表的大小写已经标准化。

然后,您所要做的就是遍历输入文本中的各个“单词”,并在每个新单词的开头,在您的位置列表中开始一个新的二进制搜索。一旦找到不匹配的单词,您就可以跳过整个单词并继续下一个单词。

可能的问题:多词位置,例如“纽约”、“第三街”、“中华人民共和国”。但是,如果您发现您的 bsearch 将您引导到(可能!)多词结果,那么可能只需要保存第一个新词的位置。然后,如果完整比较失败——可能是几个词之后——你所要做的就是恢复到这个“下一个”词,与你开始的前一个词相关。

至于“单词”是什么:在准备位置列表时,列出可能出现在位置内的所有字符。只有包含此列表中字符的短语才能被视为有效的“单词”。

于 2013-07-20T13:22:20.993 回答
0

How fast are the tweets coming in? As in is it the full twitter fire hose or some filtering queries? A bit more sophisticated approach, that is similar to what you described is using an NLP tool that is integrated to a gazetteer. Very few NLP tools will keep up to twitter rates, and very few do very well with twitter because of all of the leet speak. The NLP can be tuned for precision or recall depending on your needs, to limit down performing lockups in the gazetteer. I recommend looking at Rosoka(also Rosoka Cloud through Amazon AWS) and GeoGravy

于 2013-10-01T02:36:43.237 回答