如何对看不见的文本数据进行分类?



我正在为地址训练一个文本分类器,以便给定的句子是否是地址。

Sentence examples :- 
(1) Mirdiff City Centre, DUBAI United Arab Emirates 
(2) Ultron Inc. <numb> Toledo Beach Rd #1189 La Salle, MI <numb>
(3) Avenger - HEAD OFFICE P.O. Box <numb> India

由于地址可以是n种类型,因此很难制作这样的分类器。是否有任何用于相同或任何其他非 ML 方式的预训练模型或数据库。

如前所述,验证地址是否有效 - 可能更好地形式化为信息检索问题而不是机器学习问题。(例如,使用服务(。

但是,从您给出的示例来看,您似乎有几种实体类型再次出现,例如组织和位置。

我建议使用 NER(例如空间(丰富数据,并将实体类型用于功能或规则。

请注意,命名实体识别器比典型的词袋分类器更依赖于上下文,并且通常对看不见的数据更可靠。

当我上次这样做时,问题非常困难,特别是因为我有国际地址,而且各国之间的差异是巨大的。 再加上人们添加的变化,即使对人类来说,这个问题也变得非常困难。

我终于构建了一个启发式的(包含它,比如PO BOX,一个可能的国家名称(grep维基百科(,也许是城市名称(,然后将所有剩余的地址扔进谷歌地图API。GM是相当好的识别地址,但即使这样也会有误报,因此很可能需要手动检查。

我没有使用 ML,因为我的地址数据库"大"但不足以训练,尤其是我们缺乏标记的训练数据。

由于您正在寻求文学推荐(顺便说一句,这个问题可能对这个地方很广泛(,我可以向您推荐两个链接: https://www.reddit.com/r/datasets/comments/4jz7og/how_to_get_a_large_at_least_100k_postal_address/

https://www.red-gate.com/products/sql-development/sql-data-generator/

https://openaddresses.io/

您需要构建一个标记的数据,正如Sauer已经提到的@Christian,其中您有带有地址的示例。而且您可能还需要使用错误的地址制作虚假数据!因此,例如,您必须仅用电话号码或其他方式造句子。但无论如何,这将是一个非常不平衡的数据集,因为您将有很多正确的地址,只有少数不是地址。总的来说,您需要大约 1000 个示例才能找到它的起点。

另一种选择是手动识别基本地址并进行相似性分析以识别与之相关的句子。

正如Uri Goren所提到的,问题在于命名实体识别,而市场上有很多经过训练的模型。不过,最好的还是斯坦福NER的。

https://nlp.stanford.edu/software/CRF-NER.shtml 它是一个条件随机场 NER。它在java中可用。

如果您正在寻找相同的python实现。看看: 如何安装和调用斯坦福NERTagger?

在这里,您可以从多个标签序列中收集信息,例如 、 或任何其他类似的序列。如果它没有给你正确的东西,它仍然会以某种方式让你更接近整个文档中的任何地址。这是一个良好的开端。

谢谢。

最新更新