定义单词的上下文 - Python

时间:2010-03-23 14:37:30

标签: python django dictionary nlp

我认为这是一个有趣的问题,至少对我而言。


我有一个单词列表,让我们说:

  

照片,免费,搜索,图像,css3,css,教程,网页设计,教程,谷歌,中国,审查,政治,互联网

我有上下文列表

  • 编程
  • 世界新闻
  • 技术
  • 网页设计

如果可能,我需要尝试将单词与适当的上下文/上下文匹配。

也许以某种方式发现词汇关系。

alt text


有什么想法吗?

非常感谢帮助!

4 个答案:

答案 0 :(得分:3)

这听起来比NLP更像是分类/本体问题。请尝试WordNet获取标准本体。

我在你陈述的问题中没有看到任何真正的NLP,但如果你确实需要一些语义分析或解析器,请尝试NLTK

答案 1 :(得分:2)

这些词来自哪里?它们来自真实的文本。如果它们是那么它是典型的数据挖掘问题。您需要做的是将您的文档集合到矩阵中,其中行表示单词来自哪个文档,列表示文档中的单词。

例如,如果你有两个这样的文件:

D1:需要找到意义。 D2:需要将苹果与橘子分开

你的矩阵看起来像这样:

      Need to find meaning Apples Oranges Separate From
D1:   1     1   1     1      0      0       0       0
D2:   1     1   0     0      1      1       1       1

这称为文档矩阵

收集此统计信息后,您可以使用K-Means等算法将类似文档分组在一起。既然你已经知道你有多少概念,你的任务应该更容易。 K-Means算法非常慢,因此您可以尝试使用SVD

等技术对其进行优化

答案 2 :(得分:2)

我刚刚在几天前找到了这个:ConceptNet

这是一个常识本体,所以它可能没有你想要的那么具体,但它有一个python API,你可以下载他们的整个数据库(目前大约1GB解压缩)。请记住他们的licensing restrictions

如果你阅读由开发它的团队发布的the papers,你可能会得到一些关于如何将你的文字与概念/背景联系起来的想法。

答案 3 :(得分:1)

您的问题的答案显然取决于您尝试将术语映射到的目标分类法。一旦你决定了这一点,你需要弄清楚概念应该是多么精细。正如其他回复中所建议的那样,WordNet将为您提供同义词,即或多或少同义的术语集,但您必须通过其他机制将其映射到“网页设计”或“世界新闻”等概念。这些不是在WordNet中编码的。如果您的目标是非常广泛的语义分类,您可以使用WordNet的更高级别的概念节点,这些节点可以区分,例如, (从等级上看)人类来自动物,来自植物的动物,来自固体的物质,来自抽象事物的混凝土等。

另一种可能对你非常有用的分类是维基百科类别系统。这不仅仅是我刚想出来的一个自发的想法,而且已经a lot of work从维基百科类别中推导出真正的本体。看看Java Wikipedia Library - 想法是找到有关术语的维基百科文章(例如'css3'),提取本文所属的类别,并根据某些标准选择最佳的文章(即'编程','技术'和'网络开发')。根据您尝试执行的操作,最后一步(选择几个给定类别中的最佳类别)可能会也可能不会很困难。

有关您可以使用的其他本​​体/知识库的列表,请参阅here