Scala 拆分了两个未分开的单词
Scala split a 2 words which aren't seperated
我有一个语料库,其中包含像 applefruit
这样的词,它没有被任何我想做的分隔符分隔。因为这可能是一个非线性问题。我想传递一个自定义词典,仅当词典中的单词是语料库中单词的子串时才进行拆分。
如果我的字典只有 apple
和语料库中的 3 个单词 aaplefruit
、applebananafruit
、bananafruit
。输出应该类似于 apple , fruit
apple, bananafruit
, bananafruit
.
注意我不是拆分 bananafruit
,目的是通过拆分字典中提供的文本来加快处理速度。我正在使用 scala 2.x.
您可以根据以下模式进行正则表达式查找和替换:
(?=apple)|(?<=apple)
然后用逗号替换,两边用空格包围。我们可以试试:
val input = "bananaapplefruit"
val output = input.replaceAll("(?=apple)|(?<=apple)", " , ")
println(output) // banana , apple , fruit
您可以将正则表达式与拆分一起使用:
scala> "foobarfoobazfoofoobatbat".split("(?<=foo)|(?=foo)")
res27: Array[String] = Array(foo, bar, foo, baz, foo, foo, batbat)
或者如果您的词典(and/or 个要拆分的字符串)有多个单词...
val rx = wordList.map { w => s"(?<=$w)|(?=$w)" }.mkString("|")
val result: List[String] = toSplit.flatMap(_.split(rx))
我有一个语料库,其中包含像 applefruit
这样的词,它没有被任何我想做的分隔符分隔。因为这可能是一个非线性问题。我想传递一个自定义词典,仅当词典中的单词是语料库中单词的子串时才进行拆分。
如果我的字典只有 apple
和语料库中的 3 个单词 aaplefruit
、applebananafruit
、bananafruit
。输出应该类似于 apple , fruit
apple, bananafruit
, bananafruit
.
注意我不是拆分 bananafruit
,目的是通过拆分字典中提供的文本来加快处理速度。我正在使用 scala 2.x.
您可以根据以下模式进行正则表达式查找和替换:
(?=apple)|(?<=apple)
然后用逗号替换,两边用空格包围。我们可以试试:
val input = "bananaapplefruit"
val output = input.replaceAll("(?=apple)|(?<=apple)", " , ")
println(output) // banana , apple , fruit
您可以将正则表达式与拆分一起使用:
scala> "foobarfoobazfoofoobatbat".split("(?<=foo)|(?=foo)")
res27: Array[String] = Array(foo, bar, foo, baz, foo, foo, batbat)
或者如果您的词典(and/or 个要拆分的字符串)有多个单词...
val rx = wordList.map { w => s"(?<=$w)|(?=$w)" }.mkString("|")
val result: List[String] = toSplit.flatMap(_.split(rx))