如何在nlp中进行特征提取

问题描述 投票:0回答:3

我正在构建一个多类文本分类器,它具有作业门户的数据集。数据集由映射到实际名称的组织名称组成(见下文)。我想制作一个可以预测实际组织名称的ml模型。 我的数据集如下所示:

Flipkart.com flipkart

FlipKart pvt ltd flipkart

flipkart.com flipkart

我的问题是:

A.)我可以提取哪些功能? B.)我的特征提取器是否也应该使用训练集的标签? C.)我的特征应该是什么样的,因为它们应该是nbclassifier的dict。什么价值有什么关键?

我是NLP的新手,任何帮助都会受到赞赏。 Source code on github

python machine-learning nlp nltk naivebayes
3个回答
1
投票

我会把机器学习排除在外。你要做的是模糊匹配,可能有一些同义词弃用。

一种昂贵的技术是levenshtein距离公式,更便宜,虽然在某些情况下同样有效,但技术是令牌/ ngram分块和索引。

制作一个n-gram的字典,其中n是克的长度。 n = 3,然后Flipkart.com的克是'Fli','lip','ipk','pka'等等,键是ngram,值是包含该ngram的匹配列表。对于输入字符串中的每个n-gram,在dict中查找(在O(log(n)m处实现),其中n是总索引n-gram的数量,m是输入字符串中的n-gram数),并计算结果,直到你根据与输入字符串共享的n-gram数量得到每个匹配的“得分”。

我提到的“分块”是索引“块”或一组n-gram并执行相同的任务。 Aka ['Fli','lip','ipk']将被索引并用于计算结果。

这些技术也可以使用“令牌”来执行,而不是使用n-gram,或者除了n-gram之外,还可以捕获匹配的整个单词。

这些都不需要统计数据,而是利用对语言的理解。

或者,您可以尝试从短字符串列表中派生一组有意义的要素,以映射到一组非常大的类。这将是一项非常困难的任务,因此我建议使用模糊匹配方法。


0
投票

首先,您必须将所有文本数据转换为机器可读形式,因为机器学习算法只能理解向量。

1)找到数据集的词汇表

2)使用CountVectorizer()或tfidfVectorizer()将文本转换为向量

3)现在在预处理的数据集上训练一个朴素的贝叶斯分类器

有关详细信息,请查看https://machinelearningmastery.com/prepare-text-data-machine-learning-scikit-learn/


0
投票

由于您正在尝试使用文本,我认为您应该使用GloVe模型训练您的模型。此模型是一个单词到矢量模型,其具有大数据集,其中包含数据集中所有单词的向量。 GloVe型号:https://nlp.stanford.edu/projects/glove/

高级版是Sentence Encoder https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46808.pdf

我相信你必须学习嵌入这个词来获得一个简单的想法来继续进行文本处理。您可以在此处查看详细信息以继续进行文本处理:https://www.analyticsvidhya.com/blog/2018/02/the-different-methods-deal-text-data-predictive-python/

我希望这有帮助。祝一切顺利。

© www.soinside.com 2019 - 2024. All rights reserved.