我正在为我的最后一年项目创建一个句子分类程序。我的目标是根据预期的答案将问题分为 10 个类别。我需要在保持单词顺序的同时在向量中表示问题。
简化这个例子
- 我可以点披萨吗
- 我可以点披萨
当用词袋或特征表示袋表示时,上述两个句子具有相同的词向量。是否有任何其他表示技术来表示问题。这样分类器可以被告知单词“i”在“can”之前,因此可以对它们进行不同的分类。
请注意,这不是对问题和句子进行分类的问题。我必须不仅根据预期答案而且还根据其他一些关键字将问题分类到字段中。
我正在为我的最后一年项目创建一个句子分类程序。我的目标是根据预期的答案将问题分为 10 个类别。我需要在保持单词顺序的同时在向量中表示问题。
简化这个例子
当用词袋或特征表示袋表示时,上述两个句子具有相同的词向量。是否有任何其他表示技术来表示问题。这样分类器可以被告知单词“i”在“can”之前,因此可以对它们进行不同的分类。
请注意,这不是对问题和句子进行分类的问题。我必须不仅根据预期答案而且还根据其他一些关键字将问题分类到字段中。
在自然语言处理中,您基本上有两种表示句子的方式:
第一个(机器学习方法)为您提供稀疏向量,后者(深度学习方法)为您提供密集向量。
如果您愿意使用 BoW,则基本上可以在句子中添加任何顺序,因为向量由文本中的每个单词组成。
pizza / can / a / order / i
第 1 句:[1,1,1,1,1]
第 2 句:[1,1,1,1,1]
这两个句子使用unigram将具有相同的表示,但使用bigram会改变,因为除了单词之外,您还将拥有 2 个单词的所有组合。
pizza / can / a / order / i / can i / i order / order a / a pizza / i can / can order
第 1 句:[1,1,1,1,1,1,1,1,1,0,0]
第 2 句:[1,1,1,1,1,0,0,1,1,1,1]
请参阅本文,特别是CountVectorizer以解决您的问题。