通常人们希望通过使用词袋方法来获取文本中的特征,计算单词并计算不同的度量,例如tf-idf值,如下所示:How to include words as numerical feature in classification
但我的问题不同,我想从一个单词中提取一个特征向量。我想知道例如土豆和炸薯条在向量空间中彼此接近,因为它们都是由土豆制成的。我想知道牛奶和奶油也很接近,热和温暖,石头和坚硬等等。
这个问题叫什么?我可以通过查看大量文档来了解单词的相似性和特征吗?
我不会用英语实现,所以我不能使用数据库。
答案 0 :(得分:3)
在NLP中存在3个基本级别:
(数字越大表示问题越大:))。形态学以多数语言而闻名。句法分析是一个更大的问题(它涉及诸如动词,某些句子中的名词等等)。语义分析具有最大的挑战,因为它处理的意义很难在机器中表示,有许多例外并且是特定于语言的。
据我了解你想知道单词之间的某些关系,这可以通过所谓的依赖树库,(或只是 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中找到包。