2

我有 300k+ html 文档,我想从中提取邮政地址。数据是不同的结构,所以正则表达式不起作用。

我已经阅读了大量有关 Python 的 NLP 和 NLTK 的内容,但是我仍在努力从哪里开始。

这种方法称为词性标记还是分块/部分解析?我找不到任何有关如何实际标记页面的文档,以便我可以在其上训练模型,甚至找不到我应该训练的内容。

所以我的问题;

  • 这种方法叫什么?
  • 我如何标记一些要训练的文档
4

4 回答 4

2

Qn:哪个 NLP 任务与这个任务密切相关?

Ans:检测邮政地址的任务可以看作是名称实体识别(NER)任务。但我建议将任务视为简单的 html序列标签(即您的输入数据),然后执行一些标准的机器学习分类

问:如何标记一些文档以用作训练数据?

答:您可以做的是:

  1. 将每个单词或每一行标记为B egin I nside 或O utside
  2. 选择有监督的分类方法
  3. 决定什么是特征(这里有一些提示:特征选择
  4. 构建模型(基本上只运行配置了特征的分类软件)
  5. 瞧,输出应该给你BIO,然后删除所有标记为O的实例 ,你将留下作为地址的行/单词
于 2013-01-17T09:15:33.697 回答
1

您的任务称为信息提取,但这是一个非常非常广泛的概念。幸运的是,您的任务更加有限(街道地址),但您没有提供很多信息:

  1. 地址在哪些国家/地区?东京的地址看起来与克利夫兰的地址大不相同。如果您对有限数量的国家/地区的地址感兴趣,您成功的几率会大得多——您可以从每个国家/地区开发一个解决方案。如果我们谈论的数量非常有限,您可以手动编写识别器。

  2. 我们在谈论什么样的网页?它们是随机集合,还是您可以将它们分组为有限数量的网站和格式?地址出现在哪里?(即,是否有任何上下文线索可以用来将它们归零?)

对于问题 2,我将采用更糟糕的情况:页面完全不同,地址可能在任何地方。不确定最先进的技术是什么,但我会将其视为分块问题。

要获得任何体面的结果,您需要一个训练集。至少,来自相同位置和风格(非正式、不完整、完整)的大量地址与您要提取的地址相同。然后,您可以尝试从分块器中获得不错的性能(可能通过后处理)。

PS。我不会只是丢弃 html 标记。它包含有关可能有用的文档结构的信息。在您丢弃 html 标记之前,我会添加结构标记(段落、强调、标题、列表、显示)。

于 2013-01-02T22:49:35.867 回答
1

Apple 将他们的软件称为“数据检测器”(小心,它已获得专利——他们为此赢得了针对 HTC Android 手机的禁令)。更一般地说,我认为这个应用程序被称为信息提取

于 2012-12-23T11:19:18.703 回答
1

从 HTML 页面中去除文本(除非 HTML 中有一种方法可以识别地址文本,例如具有特定类的 div),然后构建一组与使用的地址格式匹配的规则。

如果在多个国家/地区有邮政地址,则格式可能明显不同,但在一个国家/地区内,格式相同(有一些调整)或无效。

例如,在美国,地址是 3 或 4 行(包括人)。通常有一个邮政编码(5 位可选,后跟 4 位)。其他国家有不同格式的邮政编码。

除非您的目标是所有地址都 100% 准确,否则您可能应该在任务预算内尽可能多地提取地址。

除非您想使用命名实体识别来查找城市、国家等,否则这似乎不是 NLP 的任务。

于 2012-12-29T21:08:43.730 回答