100 万个句子要保存在数据库中 - 删除不相关的英语单词

Posted

技术标签:

【中文标题】100 万个句子要保存在数据库中 - 删除不相关的英语单词【英文标题】:1 million sentences to save in DB - removing non-relevant English words 【发布时间】:2011-05-14 15:05:32 【问题描述】:

我正在尝试使用从情绪中提取的正面/负面词来训练朴素贝叶斯分类器。示例:

我喜欢这部电影:))

我讨厌下雨:(

这个想法是我根据使用的情绪提取正面或负面的句子,但为了训练分类器并将其保存到数据库中。

问题是我有超过 100 万个这样的句子,所以如果我一个字一个字地训练它,数据库就会折腾。我想删除所有不相关的单词示例'I','this','when','it',这样我必须进行数据库查询的次数就会减少。

请帮助我解决此问题,以建议我更好的方法

谢谢

【问题讨论】:

我猜你的“不相关”词,包括“我”、“这个”、“何时”、“它”应该在肯定句和否定句中出现得非常频繁。也许这可以帮助设计一种算法来自动取消某些单词的资格,无论是在你去的时候还是作为预通行证。 +1 表示“数据库将进行折腾” 这必须是数据库吗?全文搜索引擎怎么样?还是简单的数据结构? lucidimagination.com/Community/Hear-from-the-Experts/Articles/… 【参考方案1】:

有两种常见的方法:

    编译一个stop list。 POS tag 的句子,把你认为不感兴趣的词类扔掉。

在这两种情况下,可以使用诸如PMI 之类的度量来确定哪些词/POS 标签是相关的。

请注意:信息检索的标准停止列表在情绪分析中可能有效,也可能无效。我最近读了一篇论文(没有参考,抱歉),它声称!和?,通常在搜索引擎中被删除,是情感分析的有价值的线索。 (“我”也可以,尤其是当你也有一个中性类别时。)

编辑:您还可以安全地丢弃训练集中仅出现一次的所有内容(所谓的hapax legomena)。出现一次的词对分类器的信息价值不大,但可能会占用大量空间。

【讨论】:

+1,在训练算法之前很难找出要删除哪些词,看看哪些词不太重要。【参考方案2】:

为了减少从数据库中检索到的数据量,您可以在数据库中创建一个字典——一个将单词*映射到数字**的表——然后只检索一个数字向量用于训练和一个完整的句子用于手册标记情绪。

|* 我没有想到任何科学出版物,但也许只使用stems or lemmas 而不是文字就足够了。它会减小字典的大小。

|** 如果这个操作杀死了你的数据库,你可以在本地应用程序中创建一个字典——它使用一个文本索引引擎(例如,apache lucene)——并且只将结果存储在你的数据库中。

【讨论】:

ps。我还会把句子的长度作为一个特征。【参考方案3】:

你可能想看看这个 http://books.google.com/books?id=CE1QzecoVf4C&lpg=PA390&ots=OHuYwLRhag&dq=sentiment%20%20mining%20for%20fortune%20500&pg=PA379#v=onepage&q=sentiment%20%20mining%20for%20fortune%20500&f=false

【讨论】:

确实,感谢您提供的链接;看看其他人是如何做到这一点的……

以上是关于100 万个句子要保存在数据库中 - 删除不相关的英语单词的主要内容,如果未能解决你的问题,请参考以下文章

最好保存大量名称的 C++ 数据结构

在大型句子数据集中找到最相似的句子

使用 Hadoop/HDFS 比较 100 万个生物特征(小)文件

redis实践一些要注意的事项

分析了100万个搜索结果,验证了16个SEO优化的核心影响因素

如何在100万个整数中 选出最大的10个 java