使用附加上下文对短字符串进行分类

数据挖掘 神经网络 决策树 文本分类 文本 ngram
2022-03-03 11:01:40

我有一个短字符串列表,每个字符串都标识一个城市。拼写错误很常见。下面的示例显示了其中一些短字符串,以及它们应该匹配的正确城市。

细绳 城市
阿姆斯特丹 阿姆斯特丹
阿斯姆特丹 阿姆斯特丹
阿姆斯特丹 阿姆斯特丹
纽约 纽约
纽约 纽约
纽约 纽约
纽约 纽约
纽约 纽约

我想训练一个接受输入字符串的分类器,然后预测最有可能被识别的城市。然而,有一个微妙之处在于,正确的城市不仅取决于输入字符串,还取决于其他因素,例如人的当前位置以及正在写作的人。

例如,以下字符串可能表示基于这些其他特征的不同城市:

当前位置 细绳 城市
英国 约翰 德拉特福德 达特福德
英国 杰克 达特福德 达特福德
英国 吉尔 达特弗罗德 达特福德
挪威 吉尔 达特福德 达特福德
挪威 约翰 达特弗罗德 达特峡湾
挪威 詹姆士 达特弗罗德 达特峡湾
瑞典 奥拉夫 德拉特峡湾 达特峡湾
英国 奥拉夫 德拉特福德 达特峡湾

正如我们所看到的,相同的输入字符串可能意味着不同的实际城市,具体取决于编写者以及作者当前所在的位置。这意味着仅使用 tf-idf 进行模糊搜索不足以做出正确的预测。

我正在考虑两种不同的方法来实现适当的分类器:

  • 使用字符 n-gram 作为特征 + 其他分类特征的提升树
  • 使用字母卷积+其他分类特征的神经网络

这里的一个优点是字符串的大小总是有限的(最多大约 50/60 个字符)。

对于提升树的情况,我特别苦苦挣扎的一件事是,如何让模型了解字符 n-gram 的顺序?例如,序列mst之后的序列ams表示amsterdam,但我不知道如何给模型一种序列感,这个序列可能在字符串中的任何位置?(例如,如果输入字符串是,aamsterdam那么这个序列将在位置 2,而不是位置 1)。

所以简而言之,我会寻找分解和建模输入字符串的最佳方式的指导,以便将其转换为可被提升树或(卷积?)神经网络使用的特征,以及其他分类输入特征.

我显然不是在这里寻找一个完整的解决方案,只是一般指导将不胜感激。

0个回答
没有发现任何回复~