使用ScalaNLP tokenizer时过滤掉数字

时间:2014-05-01 23:24:05

标签: scala nlp tokenize scala-nlp

scala中是否有一个命令可以忽略所有类型的数字,例如" IgnoreNumbers()〜> "

我是scala新手,事实上,我只需要使用这种语言的一个脚本。

非常感谢您的帮助!

来自http://nlp.stanford.edu/software/tmt/tmt-0.4/examples/example-1-dataset.scala的标记器:

val tokenizer = {
  SimpleEnglishTokenizer() ~>            // Remove punctuation
  CaseFolder() ~>                        // Lowercase everything
  WordsAndNumbersOnlyFilter() ~>         // Ignore non-words and non-numbers
  MinimumLengthFilter(3)                 // Take terms with >=3 characters
}

1 个答案:

答案 0 :(得分:0)

我从未使用过ScalaNLP,但是通过简单地删除Number用法来修改(或更好地创建新类型)基于WordsAndNumbersOnlyFilter似乎是微不足道的,例如< / p>

case class WordsOnlyFilter() extends Transformer {
  // original from WordsAndNumbersOnlyFilter
  // override def apply(terms : Iterable[String]) =
  //   terms.filter(term => TokenType.Word.matches(term) || TokenType.Number.matches(term));

  // Modification that doesn't use/accept TokenType.Number
  override def apply(terms : Iterable[String]) =
    terms.filter(term => TokenType.Word.matches(term));
}

然后:

val tokenizer = {
  // ..
  WordsOnlyFilter() ~>         // Ignore non-words
  // ..
}