我有 300k+ html 文档,我想从中提取邮政地址。数据是不同的结构,所以正则表达式不起作用。
我已经阅读了大量有关 Python 的 NLP 和 NLTK 的内容,但是我仍在努力从哪里开始。
这种方法称为词性标记还是分块/部分解析?我找不到任何有关如何实际标记页面的文档,以便我可以在其上训练模型,甚至找不到我应该训练的内容。
所以我的问题;
- 这种方法叫什么?
- 我如何标记一些要训练的文档
您的任务称为信息提取,但这是一个非常非常广泛的概念。幸运的是,您的任务更加有限(街道地址),但您没有提供很多信息:
地址在哪些国家/地区?东京的地址看起来与克利夫兰的地址大不相同。如果您对有限数量的国家/地区的地址感兴趣,您成功的几率会大得多——您可以从每个国家/地区开发一个解决方案。如果我们谈论的数量非常有限,您可以手动编写识别器。
我们在谈论什么样的网页?它们是随机集合,还是您可以将它们分组为有限数量的网站和格式?地址出现在哪里?(即,是否有任何上下文线索可以用来将它们归零?)
对于问题 2,我将采用更糟糕的情况:页面完全不同,地址可能在任何地方。不确定最先进的技术是什么,但我会将其视为分块问题。
要获得任何体面的结果,您需要一个训练集。至少,来自相同位置和风格(非正式、不完整、完整)的大量地址与您要提取的地址相同。然后,您可以尝试从分块器中获得不错的性能(可能通过后处理)。
PS。我不会只是丢弃 html 标记。它包含有关可能有用的文档结构的信息。在您丢弃 html 标记之前,我会添加结构标记(段落、强调、标题、列表、显示)。
从 HTML 页面中去除文本(除非 HTML 中有一种方法可以识别地址文本,例如具有特定类的 div),然后构建一组与使用的地址格式匹配的规则。
如果在多个国家/地区有邮政地址,则格式可能明显不同,但在一个国家/地区内,格式相同(有一些调整)或无效。
例如,在美国,地址是 3 或 4 行(包括人)。通常有一个邮政编码(5 位可选,后跟 4 位)。其他国家有不同格式的邮政编码。
除非您的目标是所有地址都 100% 准确,否则您可能应该在任务预算内尽可能多地提取地址。
除非您想使用命名实体识别来查找城市、国家等,否则这似乎不是 NLP 的任务。