【问题标题】:Building dictionary of words from large text从大文本构建单词词典
【发布时间】:2010-04-06 19:43:25
【问题描述】:

我有一个包含英语/意大利语帖子的文本文件。我想将帖子读入数据矩阵,以便每一行代表一个帖子,每列一个单词。矩阵中的单元格是每个单词在帖子中出现的次数的计数。词典应包含整个文件中的所有单词或非详尽的英语/意大利语词典。

我知道这是 NLP 常见的基本预处理步骤。而且我知道编写代码非常简单,不过我想使用一些 NLP 领域特定的工具来修剪停用词等。

有人知道可以执行此任务的工具\项目吗?

有人提到了apache lucene,不知道lucene索引能不能序列化成我需要的数据结构?

【问题讨论】:

  • 被称为 Term-Document 矩阵。

标签: lucene nlp


【解决方案1】:

也许你想看看GATE。它是文本挖掘和处理的基础设施。这就是 GATE 所做的(我从网站上得到的):

  • 能够解决几乎所有文本处理问题的开源软件
  • 一个由开发人员、用户、教育工作者、学生和科学家组成的成熟而广泛的社区
  • 用于创建稳健且可维护的文本处理工作流的已定义且可重复的流程
  • 积极用于各种语言处理任务和应用程序,包括:客户的声音;癌症研究;药物研究;决策支持;招聘;网络挖掘;信息提取;语义标注
  • 自 1995 年以来运行的耗资数百万欧元的研发计划的结果,由商业用户、EC、BBSRC、EPSRC、AHRC、JISC 等资助。
  • 被世界各地的公司、中小企业、研究实验室和大学使用
  • 自然语言工程的 Eclipse、信息提取的 Lucene、文本挖掘的 ISO 9001

【讨论】:

    【解决方案2】:

    您想要的非常简单,以至于在大多数语言中,我建议您使用从字符串映射到整数的哈希表数组来推出自己的解决方案。例如,在 C# 中:

    foreach (var post in posts)
    {
      var row = new Dictionary<string, int>();
    
      foreach (var word in GetWordsFromPost(post))
      {
        IncrementContentOfRow(row, word);
      }
    }
    
    // ...
    
    private void IncrementContentOfRow(IDictionary<string, int> row, string word)
    {
      int oldValue;
      if (!row.TryGet(word, out oldValue))
      {
        oldValue = 0;
      }
    
      row[word] = oldValue + 1;
    }
    

    【讨论】:

    • 你是对的 :-)... 不过,我还是希望使用一些 NLP 领域特定的工具,这样我就可以修剪掉停用词。我会更新我的问题
    • 我认为 GATE 为您完成了大部分工作(删除常用词)。
    • @LiorH:酷。 @Vivin Paliath:同意,如果您想做的不仅仅是最初提出的问题,那么 GATE 可能是一个不错的选择。
    • 或者您可以使用此解决方案,但只需使用en.wikipedia.org/wiki/Stop_words中的列表之一自己删除停用词即可
    • @ealdent:我会一直这样做,因为测试你拥有的代码比测试你没有的代码更容易,但我明白为什么 OP 想要采用不同的方式。
    【解决方案3】:

    您可以查看:

    • bow - 用于文本分类的老牌 C 库;我知道它存储矩阵,它可能需要一些黑客才能得到它。
    • Weka - 一个可以处理文本和构建矩阵的 Java 机器学习框架
    • Sujit Pal's blog post 从头开始​​构建术语文档矩阵
    • 如果您坚持使用 Lucene,则应使用术语向量创建索引,并使用类似循环 getTermFreqVector() 的方法来获取矩阵。

    【讨论】:

      【解决方案4】:

      感谢@Mikos 的评论,我在谷歌上搜索了“术语文档矩阵”这个词,并找到了TMG(文本到矩阵生成器)。

      我发现它适合我的需要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 1970-01-01
        • 2019-08-15
        相关资源
        最近更新 更多