【问题标题】:Getting all words and punctiation from English text从英文文本中获取所有单词和标点符号
【发布时间】:2014-01-04 17:25:23
【问题描述】:

我想做什么:

用户加载文本。我分析它并从中获取所有单词和标点符号。现在,我可以通过快速翻译每个单词或分析单词的附加信息,轻松地为其他用户呈现文本。

现在我正在尝试使用treat gem(NLP for ruby​​),但它有很多问题。

例如在句子中

“世界不全是阳光和彩虹。”

将ain't分为“ai”和“n't”两个词

任何人都可以推荐一些库或 gem,也许我可以用 jruby 实现,我可以在没有问题的情况下用单词和标点符号分隔文本。

或者我的想法错了,还有其他方法吗?

【问题讨论】:

  • 我纠正了我的错误。对此感到抱歉。英语不是我的母语。
  • 请注意,“ain't”实际上不是英语单词,而是俚语。如果只是那个(可能还有其他宫缩)你有问题,那可能会为你从哪里开始做出改变提供一些线索。
  • 我明白了,但用户也可以加载带有俚语的文本。这就是正确分析它的关键。
  • 告诉我你对一个词的定义是什么。如果它被 分隔,那么你可以使用 text.split(" ")

标签: ruby nlp text-analysis


【解决方案1】:

为什么不从简单的扫描开始,使用简单的正则表达式从文本中获取所有单词? http://ruby-doc.org/core-2.1.0/String.html#method-i-scan

对于英语,正则表达式应该是简单的 \w,以及一些特殊字符,如您所指示的 '。

【讨论】:

    【解决方案2】:

    您是否尝试过使用同一作者的open-nlp gem?

    那里的一个例子表明它可以做你想做的事:

    OpenNLP.load
    
    text      = "The death of the poet was kept from his poems."
    tokenizer = OpenNLP::SimpleTokenizer.new
    tokens    = tokenizer.tokenize(text).to_a
    # => %w[The death of the poet was kept from his poems .]
    

    很遗憾,由于我的机器上现在没有jruby,因此我无法确认它在带有撇号的情况下是否按预期工作。

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      相关资源
      最近更新 更多