首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主题的自然语言处理

主题的自然语言处理
EN

Stack Overflow用户
提问于 2016-04-10 20:32:51
回答 2查看 310关注 0票数 2

我是一个致力于大数据课程项目的小组的一员,我们遇到了NLP的一个问题。目前,我们有一组JSON格式的数据,格式如下:

代码语言:javascript
复制
    "wine": {
        "category": "socializing",
        "category_id": 31,
        "score": 0.0,
        "topic_id": 611
    }
    "dragons": {
        "category": "lifestyle",
        "category_id": 17,
        "score": 0.279108277990115,
        "topic_id": 2137
    },
    "furry-fandom": {
        "category": "lifestyle",
        "category_id": 17,
        "score": 0.279108277990115,
        "topic_id": 48595
    },
    "legendarycreatures": {
        "category": "lifestyle",
        "category_id": 17,
        "score": 0.279108277990115,
        "topic_id": 10523
    }

标记是与相关信息相关的主题(类别、受欢迎程度评分和类别/主题ID #)。我们已经为每个主题提供了相关的类别,因为我们要从API中提取它。然而,我们的问题是,分类过于宽泛,只有33种,以确定任何有意义的趋势,主题过于具体,w/重叠(例如龙/传说生物),有太多约22,000。

这就是NLP出现的地方;我们想要创建某种类型的超级主题,它们不像“类别”那么宽泛,但不像当前的主题那么具体。再一次使用“龙”和“真生物”的例子,和其他人一样,都符合“幻想”的超级主题。

更多一些背景,我们使用Python来抓取/处理我们的数据,我们希望继续使用它,而且我们都没有NLP的任何实际经验。

考虑到这一点,我们希望在这方面有一些建议和帮助。如果有更好的方法或者NLP是不可行的,我们对他们是开放的。不过,我们试图避免的是硬编码某种用于分类的表。

博士:我们正在尝试将一组22,000个主题分类为适当的“超级主题”,这些主题比当前的主题更具体,但比当前的分类范围更广。我们试图在使用Python时使用NLP来实现这一点,但不知道如何处理,也可以接受建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 00:28:09

我建议使用TextBlob,因为它简化了训练分类器的过程。有关如何构建文本分类器的教程这里。当然,在你的具体问题中,你需要找出你想要分类的不同类别;然后你必须训练提交一个重要的训练集(不要过多地避免过度拟合数据集);到那时,你的分类器将准备好获得新的类型数据。

代码语言:javascript
复制
"dragons": {
 "category": "lifestyle",
 "category_id": 17,
 "score": 0.279108277990115,
 "topic_id": 2137
 }

并将其分类。此时,您必须根据测试数据集评估您的分类。这一点并不像看这个小数据集看起来那么明显(您能提供一个更大的数据集吗?),您似乎有一些数据集群,如:

标记为lifestyle的第一个集群

代码语言:javascript
复制
"dragons": {
    "category": "lifestyle",
    "category_id": 17,
    "score": 0.279108277990115,
    "topic_id": 2137
},
"furry-fandom": {
    "category": "lifestyle",
    "category_id": 17,
    "score": 0.279108277990115,
    "topic_id": 48595
},
"legendarycreatures": {
    "category": "lifestyle",
    "category_id": 17,
    "score": 0.279108277990115,
  }

第二簇标记socializing

代码语言:javascript
复制
"wine": {
        "category": "socializing",
        "category_id": 31,
        "score": 0.0,
        "topic_id": 611
    }

要定义超级类别,您必须告诉分类器,像dragonslegendarycreatures这样的术语属于同一个数据集,我们称之为fantasy。因此,这不仅是一个问题或分类,也是文本分析和语义的问题:legendarycreatures => legendary + creatures (单词袋)与术语dragons的距离比其他单词更近,因此word2vec可以帮助这里评估这些名称的向量,并定义它们背后的度量标准以及它们之间的距离。gensim提供了一个很好的实现。

我提到的是word2vec,因为如果您有每个条目的文本/描述,它就会工作。在最后一种情况下,您只需为项目的标题定义一个度量标准,比如dragonslegendarycreatures

更新了,因此,我正在试图找到正确的分类算法,使用一种全新的技术,“使用遗传编程自动创建和优化机器学习管道”,名为Tpot,由@rhiever制作。

在这种情况下,该工具需要特征向量(来自word2vec)作为输入,必须以受监督的数据集格式提供。这是讨论,这是一个很好的起点。

票数 1
EN

Stack Overflow用户

发布于 2016-04-11 00:19:01

这是一个典型的分类问题。如果您想使用Python,我建议您使用自然语言ToolKit (NLTK),特别是nltk.classify包。关于使用NLTK进行分类的一个很好的介绍和概述可以在这里找到:http://www.nltk.org/book/ch06.html。要获得更多关于nltk.classify的信息:

代码语言:javascript
复制
>>> import nltk
>>> help(nltk.classify)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36535239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档