【问题标题】:How to proceed with feature extraction in nlp如何在 nlp 中进行特征提取
【发布时间】:2018-07-18 16:24:11
【问题描述】:

我正在构建一个多类文本分类器,其中包含工作门户的数据集。数据集由映射到实际名称的组织名称组成(见下文)。我想制作一个可以预测实际组织名称的机器学习模型。
我的数据集如下所示:

Flipkart.com Flipkart

FlipKart pvt ltd Flipkart

flipkart.com Flipkart

我的问题是这样的:

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

我是 NLP 新手,如有任何帮助,我们将不胜感激。 Source code on github

【问题讨论】:

  • 我几乎可以肯定您来错地方了(您的问题中没有代码)。试试 Datascience Stackexchange 或 Cross Validated。而且,这是一个很笼统的问题,大家还是先自己研究一下吧。
  • @debzsud 感谢您的建议。
  • 对于这些例子,正则表达式可以工作。类名总是输入的子字符串吗?因为那么正则表达式就是答案。

标签: python machine-learning nlp nltk naivebayes


【解决方案1】:

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

高级版是句子编码器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/

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

【讨论】:

    【解决方案2】:

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

    1) 查找数据集的词汇表

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

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

    欲了解更多详情,请查看 https://machinelearningmastery.com/prepare-text-data-machine-learning-scikit-learn/

    【讨论】:

    • 我们提取的特征应该只是向量吗?我构建的特征提取器直接作用于文本并返回文本中的特征。这有什么问题吗?我的准确度为零。
    • 嗨,抱歉耽搁了。我认为您做错了什么。无法将文本作为机器学习算法的输入。
    • www.github.com/debaser990/CompanyTagger
    • 我目前正在尝试对提取的特征进行矢量化处理。我的特征是使用模式匹配缩短的输入数据的子字符串。我应该如何对它们进行矢量化。问题是 nb 分类器要求我的特征是字典。但在矢量化后我的特征变成了矢量。
    【解决方案3】:

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

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

    制作一个 n-gram 字典,其中 n 是 gram 的长度。 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,以捕获匹配的整个单词。

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

    或者,您可以尝试从短字符串列表中派生出一组有意义的特征,以映射到非常大的类集。这将是一项极其艰巨的任务,因此我推荐使用模糊匹配方法。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2020-08-06
      • 2011-08-15
      • 2012-10-19
      • 2012-08-13
      相关资源
      最近更新 更多