gpt4 book ai didi

c# - 将文本拆分成句子,即使 Mr. Mrs. 存在于文本中

转载 作者:行者123 更新时间:2023-11-30 13:50:57 25 4
gpt4 key购买 nike

我有一个问题,我想用句号 (.) 将文本拆分成句子

例如:

先生Bean 是一部英国喜剧电视连续剧,每集 14 集半小时,由罗温·阿特金森 (Rowan Atkinson) 主演。不同的剧集由阿特金森、罗宾德里斯科尔、理查德柯蒂斯和本埃尔顿编写。

如果我拆分上面的文本,我会得到 3 个句子,比如,

1.先生

2.《憨 bean 》是一部英国喜剧电视连续剧,每集 14 集半小时,由罗温·阿特金森 (Rowan Atkinson) 主演。不同的剧集由阿特金森、罗宾德里斯科尔、理查德柯蒂斯和本埃尔顿编写。

3.不同的剧集由 Atkinson、Robin Driscoll、Richard Curtis 和 Ben Elton 编写。


我想在第二句中包含 Mr.,因为文本应该分成两句而不是三句。

<强>1。 Mr. Bean 是一部英国喜剧电视连续剧,每集 14 集半小时,由罗温·阿特金森 (Rowan Atkinson) 主演。不同的剧集由阿特金森、罗宾德里斯科尔、理查德柯蒂斯和本埃尔顿编写。

2.不同的剧集由阿特金森、罗宾德里斯科尔、理查德柯蒂斯和本埃尔顿编写。

请帮助我。感谢社区的即时反馈。

谢谢。

最佳答案

如果您正在寻找一种方法来避免在缩写后拆分句子(如 a.m.),那将是一个困难的自然语言问题。

如果您只想拆分句子而不用担心 Mr. 或 Mrs.(并且有一个不太可能出现在文本中的字符,如 *),这里有一个简单的方法:

  1. Mr.Mrs. 的所有实例替换为 Mr*Mrs*
  2. 上拆分文本。
  3. 在生成的数组中,将 Mr*Mrs* 的所有实例替换为 Mr.Mrs.

这是一个使用 NUL 作为标记字符的版本,因为它几乎不可能无意中出现在文本中:

static IEnumerable<string> Splitter(string sentences)
{
char sentinel = '\0';
return sentences.Replace("Mr.", "Mr" + sentinel)
.Replace("Mrs.", "Mrs" + sentinel)
.Split(new[] { ". " }, StringSplitOptions.None)
.Select(s => s.Replace("Mr" + sentinel, "Mr.")
.Replace("Mrs" + sentinel, "Mrs."));
}

如果您是那种认为任何特定角色都可能出现在您的文本中的偏执狂,请随意使用哨兵的 GUID。

关于c# - 将文本拆分成句子,即使 Mr. Mrs. 存在于文本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325800/

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