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

时间:2010-11-23 17:39:32

标签: database hadoop nlp classification sentiment-analysis

我正在尝试训练朴素贝叶斯分类器,从情绪中提取正/负词。例如:

我喜欢这部电影:))

我讨厌下雨的时候:(

我的想法是根据使用的集合提取正面或负面的句子,但是为了训练分类器并将其持久化到数据库中。

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

请帮我解决这个问题,向我建议更好的方法

谢谢

3 个答案:

答案 0 :(得分:8)

有两种常见的方法:

  1. 编译stop list
  2. POS tag句子并抛弃你认为不感兴趣的那些词性。
  3. 在这两种情况下,确定哪些单词/ POS标签相关可以使用PMI等措施来完成。

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

    编辑:您还可以安全地丢弃在训练集中仅发生一次的所有内容(所谓的hapax legomena)。一旦出现的单词对您的分类器几乎没有信息价值,但可能会占用很多空间。

答案 1 :(得分:4)

答案 2 :(得分:0)

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

| *没有科学出版物出现在我的脑海中,但仅仅使用stems or lemmas而不是单词就足够了。它会减少字典的大小。

| **如果此操作终止了您的数据库,您可以在本地应用程序中创建一个字典 - 使用文本索引引擎(例如,apache lucene) - 并仅将结果存储在您的数据库中。