如何为 NLP BOW 匹配新记录中的特征
How to match features in new records for NLP BOW
我有一个包含 100,000 条记录的数据集
此数据集中的数据是 2 列
1- 文本
2- Class
当我应用模型的 BOW 时,我得到了一大堆特征
很好,我设法与他们合作
我的问题是在构建模型和部署之后。
现在,如果新文本带有新词,那么模型将无法工作,因为它在相同的特征结构中工作
例子
“这是一个测试,测试很重要”,Red
“亚当通过考试”,格林
所以我的最终数据集是
This is a test important Adam pass class
1 2 1 2 1 0 0 Red
0 0 1 1 0 1 1 Green
创建模型并获得此文本后
“考试和考试很相似”,黄色
在这种情况下,特征集有新特征
和考试差不多
由于这些特征从未包含在训练模型中,因此模型会出错
我想知道如何解决这个问题?
为了解决这个问题,使用固定词汇表将文本转换为词袋。 OOV(超出词汇表)的标记用特殊的 <UNK>
标记表示。
比如我们定义一个词表V
V = ['this', 'is', 'a', 'test', 'pass', 'and', 'are', '<UNK>']
然后,您的句子将用以下向量表示:
s1 = "This is a test, test is important" #important is OOV
v1 = [1, 2, 1, 2, 0, 0, 0, 1]
s2 = "Adam pass a test" # Adam is OOV
v2 = [0, 0, 1, 1, 1, 0, 0, 1]
当您用词袋表示训练数据并拟合模型时,测试数据将以相同的方式表示,您的模型将使用此表示进行预测。在你的情况下,
s3 = "test and exam are similar"
v3 = [0, 0, 0, 1, 0, 1, 1, 2]
我有一个包含 100,000 条记录的数据集
此数据集中的数据是 2 列 1- 文本 2- Class
当我应用模型的 BOW 时,我得到了一大堆特征
很好,我设法与他们合作
我的问题是在构建模型和部署之后。
现在,如果新文本带有新词,那么模型将无法工作,因为它在相同的特征结构中工作
例子 “这是一个测试,测试很重要”,Red “亚当通过考试”,格林
所以我的最终数据集是
This is a test important Adam pass class
1 2 1 2 1 0 0 Red
0 0 1 1 0 1 1 Green
创建模型并获得此文本后
“考试和考试很相似”,黄色
在这种情况下,特征集有新特征
和考试差不多
由于这些特征从未包含在训练模型中,因此模型会出错
我想知道如何解决这个问题?
为了解决这个问题,使用固定词汇表将文本转换为词袋。 OOV(超出词汇表)的标记用特殊的 <UNK>
标记表示。
比如我们定义一个词表V
V = ['this', 'is', 'a', 'test', 'pass', 'and', 'are', '<UNK>']
然后,您的句子将用以下向量表示:
s1 = "This is a test, test is important" #important is OOV
v1 = [1, 2, 1, 2, 0, 0, 0, 1]
s2 = "Adam pass a test" # Adam is OOV
v2 = [0, 0, 1, 1, 1, 0, 0, 1]
当您用词袋表示训练数据并拟合模型时,测试数据将以相同的方式表示,您的模型将使用此表示进行预测。在你的情况下,
s3 = "test and exam are similar"
v3 = [0, 0, 0, 1, 0, 1, 1, 2]