从单个单词中提取特征

时间:2013-02-11 11:03:57

标签: machine-learning nlp feature-extraction

通常人们希望通过使用词袋方法来获取文本中的特征,计算单词并计算不同的度量,例如tf-idf值,如下所示:How to include words as numerical feature in classification

但我的问题不同,我想从一个单词中提取一个特征向量。我想知道例如土豆和炸薯条在向量空间中彼此接近,因为它们都是由土豆制成的。我想知道牛奶和奶油也很接近,热和温暖,石头和坚硬等等。

这个问题叫什么?我可以通过查看大量文档来了解单词的相似性和特征吗?

我不会用英语实现,所以我不能使用数据库。

3 个答案:

答案 0 :(得分:3)

嗯,文本数据的特征提取(例如tf-idf)基于统计。另一方面,您正在寻找感觉(语义)。因此,没有像tf-idef这样的方法适合你。

在NLP中存在3个基本级别:

  1. 形态分析
  2. 句法分析
  3. 语义分析
  4. (数字越大表示问题越大:))。形态学以多数语言而闻名。句法分析是一个更大的问题(它涉及诸如动词,某些句子中的名词等等)。语义分析具有最大的挑战,因为它处理的意义很难在机器中表示,有许多例外并且是特定于语言的。

    据我了解你想知道单词之间的某些关系,这可以通过所谓的依赖树库,(或只是 treebank )来完成:{ {3}}。它是一个句子的数据库/图表,其中一个单词可以被视为一个节点,关系可以被视为弧。捷克语有很好的树库,英语也有一些,但对于许多“覆盖率较低”的语言来说,找到一个语言可能会有问题......

答案 1 :(得分:1)

user1506145,

这是我过去使用的一个简单的想法。收集大量短文档,如维基百科文章。对每个文档进行单词计数。对于第i个文档和第j个单词,让

I =文件数量,

J =单词数

x_ij =第j个单词出现在第i个文档中的次数,

y_ij = ln(1+ x_ij)。

设[U,D,V] = svd(Y)为Y的奇异值分解。所以Y = U * D *转置(V)),U是IxI,D是对角线IxJ,V是JxJ 。

您可以使用(V_1j,V_2j,V_3j,V_4j)作为第j个单词的R ^ 4中的特征向量。

答案 2 :(得分:1)

我很惊讶以前的答案没有提到嵌入字。 Word嵌入算法可以为给定数据集的每个单词生成单词向量。这些算法可以从上下文中找出单词向量。例如,通过查看以下句子的上下文,我们可以说“聪明”和“聪明”在某种程度上是相关的。因为上下文几乎相同。

He is a clever guy He is a smart guy

可以构造共生矩阵来完成此任务。但是,效率太低了。为此目的而设计的着名技术称为Word2Vec。可以从以下论文中进行研究 https://arxiv.org/pdf/1411.2738.pdf
https://arxiv.org/pdf/1402.3722.pdf

我一直用它来做瑞典语。它在检测相似单词和完全无监督方面非常有效。

可以在gensim和tensorflow中找到包。