Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义单词的上下文-Python_Python_Django_Dictionary_Nlp - Fatal编程技术网

定义单词的上下文-Python

定义单词的上下文-Python,python,django,dictionary,nlp,Python,Django,Dictionary,Nlp,我认为这是一个有趣的问题,至少对我来说是这样 我有一个单词列表,比如: 照片,免费,搜索,图像,css3,css,教程,网页设计,教程,谷歌,中国,审查,政治,互联网 我有一个上下文列表: 程序设计 世界新闻 技术 网页设计 如果可能,我需要尝试将单词与适当的上下文/上下文匹配 也许可以通过某种方式发现单词之间的关系 有什么想法吗 非常感谢您的帮助 这听起来更像是一个分类/本体问题,而不是NLP。尝试一个标准的本体 我看不出你所说的问题中有任何真正的NLP,但如果你确实需要一些语义分

我认为这是一个有趣的问题,至少对我来说是这样


我有一个单词列表,比如:

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

我有一个上下文列表

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

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

也许可以通过某种方式发现单词之间的关系


有什么想法吗


非常感谢您的帮助

这听起来更像是一个分类/本体问题,而不是NLP。尝试一个标准的本体


我看不出你所说的问题中有任何真正的NLP,但如果你确实需要一些语义分析或解析器,试试看。

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

例如,如果您有两个这样的文档:

      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
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是一种非常慢的算法,因此您可以尝试使用一些技术对其进行优化,例如

我几天前刚刚发现:

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


如果您阅读了开发团队发布的文章,您可能会对如何将您的词汇与概念/上下文联系起来有一些想法。

您的问题的答案显然取决于您试图将词汇映射到的目标分类法。一旦您决定了这一点,您需要弄清楚概念的粒度应该有多细。正如其他回复中所建议的那样,WordNet将为您提供语法集,即或多或少同义的术语集,但您必须通过其他机制将其映射到“Web设计”或“世界新闻”等概念,因为这些概念未在WordNet中编码。如果你的目标是一个非常广泛的语义分类,你可以使用WordNet的更高层次的概念节点来区分,例如(向上)人类和动物、植物的动画、实体的物质、抽象的具体事物等等

另一种可能对您非常有用的分类法是维基百科分类系统。这不仅仅是我刚刚提出的一个自发的想法,而且从维基百科的分类中衍生出了真正的本体论。看一看-这个想法是为相关术语(如“css3”)找到一篇维基百科文章,提取本文所属的类别,并根据某些标准(如“编程”、“技术”和“web开发”)选择最佳类别。这最后一步(从几个给定的类别中选择最好的)可能困难,也可能不困难,这取决于您试图做什么


查看您可以使用的其他本体/知识库的列表。

我不认为有现成的解决方案。也许是一些机器学习算法?请尝试更好地解决这个问题。例如:a)“单词列表”中的单词[先验]是完全独立的吗?或者我们可以从相邻的单词推断出它们的“上下文”吗。b) 上下文列表是预定义的还是算法应该发现这些c)一个单词是否可以同时属于多个上下文d)这与以“语音”图像为中心的单词树有什么关系…@RadiantHex:鉴于目前为止答案不多,你可以理解为什么我建议更好地构建问题框架<模糊的问题会产生模糊的答案@mjv:你是对的,如果我能更好地提出这个问题,我会得到更多有用的答案。我之所以说得不够具体,是因为我不太确定是否可以或可以做些什么。@ferdy哦,我的天哪!!昨晚我想到了用谷歌API搜索相关的维基百科文章,因为像“css3”这样的关键词可能会带来问题。我想我可能会同意你的建议,谢谢你的回答!