首页 > 解决方案 > Scala拆分了两个未分隔的单词

问题描述

我有一个带有类似单词的语料库,applefruit它没有被我想做的任何分隔符分隔。因为这可能是一个非线性问题。我想仅当字典中的单词是语料库中单词的子字符串时才传递自定义字典进行拆分。

apple 如果我的字典在语料库中只有和 3 个单词aaplefruit, applebananafruit, bananafruit. 输出应该看起来像 apple , fruit apple, bananafruit, bananafruit

请注意,我不是在拆分bananafruit,目标是通过仅拆分字典中提供的文本来加快处理速度。我正在使用 scala 2.x。

标签: scalatextdata-preprocessing

解决方案


您可以将正则表达式与拆分一起使用:

scala> "foobarfoobazfoofoobatbat".split("(?<=foo)|(?=foo)")
res27: Array[String] = Array(foo, bar, foo, baz, foo, foo, batbat)

或者,如果您的字典(和/或要拆分的字符串)包含多个单词...

   val rx = wordList.map { w => s"(?<=$w)|(?=$w)" }.mkString("|")
   val result: List[String] = toSplit.flatMap(_.split(rx))

推荐阅读