修复拼写错误并在凌乱的文本中查找地址

时间:2017-05-09 16:23:18

标签: parsing text nlp

我正在开展一个项目来清理混乱的社交媒体和电子商务订单文本数据,我想要理智地检查我的方法,看看是否有我应该考虑使用的库和其他资源。< / p>

我正在处理成千上万的英文文本片段,但不是完整的句子,并且混合了人名,商家名称,联系信息,邮寄地址和社交媒体帖子中的内容,包括链接并处理社交媒体处理,如Twitter和Instagram处理。我得到的文字只是一大堆未格式化的非结构化文本。我会指出,文本往往是混乱的短语和单词,因此不能被认为是完整的英语句子;我之所以提到这一点,是因为我认为这可能会限制我使用标准NLP和词性标注技术进行语义分析的数量(但我不确定这一点)。

我的目标是对每个文本片段实施以下修复和增强功能: 当我可以自信地解决拼写错误,但是当没有可靠的替换时保留现有的令牌。请注意,我的文本中有一些多余的换行符,有时会丢失空格,因此拼写错误分为三种:1)常规拼写错误(例如“bananna”);没有空间拼写错误:(例如,“yellowbanana”);额外空间拼写错误:(例如,“ban ana”) 标记地址和地名,以便我可以对它们进行地理编码并链接到该地点的地图。

以下是一些组成但有代表性的例子:

示例1:

7pcs  gillette razors and 1 mens cardi
gan sweater 231 E Front St Missoula 
MT Order total $34.39 shipping ground UPS

在这个例子中,我想修复“开衫”的拼写错误,并注意到“231 E Front St Missoula MT”是邮寄地址。

示例2:

6600 cartons yellowbanana for @metmuseum 
Marpa was a seminal figure of early Tibetan Bud
dhism and principal teacher of Milarapa 

在这个例子中,我想修复“yellowbanana”的拼写错误并修复“佛教”的拼写错误

虽然我当然可以编写一堆规则和正则表达式,但我正在尝试利用现有的NLP和其他工具来避免大量的特殊情况。到目前为止,我正在查看以下实用程序:

  • https://hunspell.github.io/是Google Chrome,Firefox和许多其他项目使用的拼写检查程序。
  • https://textblob.readthedocs.io/en/dev/建立在NLTK之上,似乎有许多不同的功能,虽然我不确定它是否可以用于我的非句子文本数据来解决上述问题。这看起来很强大,但我不确定如何将它用于解决我的问题。
  • 对于示例2,我发现https://geocode.xyz/并且它无法获取完整地址(尽管它确实获得了Missoula MT)。 https://pypi.python.org/pypi/pyap看起来也很有趣,虽然仅适用于美国和加拿大,我需要能够解析世界各地的地址。遗憾的是,我不知道每个文本片段所在的国家/地区。

我非常感谢你能给我的任何指示,如果我走在正确的轨道上,请告诉我。谢谢。

2 个答案:

答案 0 :(得分:0)

从NLP角度来看,您的问题中存在多个问题(或要解决的数据挖掘问题):1)拼写纠正,2)实体提取(在您的情况下是地址提取)。

我将首先关注问题1,即首先进行拼写修正,然后将该拼写修正文本传递给解决上述问题2的信息提取器模型。

对于您的情况下的拼写纠正,最好的选择是从数据(特别是您的数据)中学习的概率框架。目前,基于概率/机器学习的最佳拼写校正器是基于深度神经网络的模型。请参阅此处 - https://medium.com/@majortal/deep-spelling-9ffef96a24f6以下是代码https://github.com/MajorTal/DeepSpell(以及对https://hackernoon.com/improving-deepspell-code-bdaab1c5fb7e的改进)。您可以开始形成标准拼写修正数据,然后可能会添加一些您自己手工制作的训练数据,以根据您的特定情况调整模型。

现在,对于实体提取,鉴于其形式不完整的文本,从培训Twitter等社交媒体文本和其他在线论坛的模型开始,例如http://www.cs.cmu.edu/~ark/TweetNLP/https://github.com/aritter/twitter_nlp并从那里获取,并通过添加自己的标记数据和参数调整来调整它们。

答案 1 :(得分:0)

Your first example on geocoder.ca: https://geocoder.ca/?scantext=7pcs%20gillette%20razors%20and%201%20mens%20cardi%20gan%20sweater%20231%20E%20Front%20St%20Missoula%20MT%20Order%20total%20$34.39%20shipping%20ground%20UPS

Gives this response: Match Location 1
x Found 3 locations in this line:

7pcs gillette razors and 1 mens cardi gan sweater 231 E1 Front1 St1 Missoula1 MT Order total $34.39 shipping ground UPS

  • 399, FRONT ST E, MISSOULA, MT (Confidence: 0.32)

  • 399, FRONT ST W, MISSOULA, MT (Confidence: 0.32)

  • FRONT ST E, MISSOULA, MT (Confidence: 0.31)