gpt4 book ai didi

regex - 如何使用 OpenNLP 和 stringi 检测句子边界?

转载 作者:行者123 更新时间:2023-12-04 00:56:06 24 4
gpt4 key购买 nike

下一个我要断了string成句:

library(NLP) # NLP_0.1-7  
string <- as.String("Mr. Brown comes. He says hello. i give him coffee.")

我想展示两种不同的方式。一个来自包裹 openNLP :
library(openNLP) # openNLP_0.2-5  

sentence_token_annotator <- Maxent_Sent_Token_Annotator(language = "en")
boundaries_sentences<-annotate(string, sentence_token_annotator)
string[boundaries_sentences]

[1] "Mr. Brown comes." "He says hello." "i give him coffee."

第二个来自包 stringi :
library(stringi) # stringi_0.5-5  

stri_split_boundaries( string , opts_brkiter=stri_opts_brkiter('sentence'))

[[1]]
[1] "Mr. " "Brown comes. "
[3] "He says hello. i give him coffee."

在第二种方式之后,我需要准备句子以删除多余的空格或再次将新字符串分解为句子。我可以调整 stringi 功能以提高结果质量吗?

关于大数据, openNLPstringi 慢(非常) .
有没有办法结合 stringi (-> 快速)和 openNLP (-> 质量)?

最佳答案

ICU 中的文本边界(在这种情况下,句子边界)分析(因此在 stringi 中)受 Unicode UAX29 中描述的规则控制,另见 ICU Users Guide on the topic 。我们读到:

[The Unicode rules] cannot detect cases such as “...Mr. Jones...”; more sophisticated tailoring would be required to detect such cases.



换句话说,如果没有自定义的非停用词词典,这是无法做到的,这实际上是在 openNLP 中实现的。因此,合并 stringi 以执行此任务的一些可能方案包括:
  • 使用 stri_split_boundaries 然后编写一个函数,决定应该加入哪些不正确拆分的标记。
  • 手动在文本中输入不间断空格(可能在点后面等,先生,ie 等之后(注意,这实际上是在 LaTeX 中准备文档时所必需的——否则单词之间的空格太大)。
  • 将自定义的非停用词列表合并到正则表达式中并应用 stri_split_regex

  • 等等。

    关于regex - 如何使用 OpenNLP 和 stringi 检测句子边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31865511/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com