Notepad++:是否有任何插件或正则表达式或宏可以将长文本拆分为句子边界

Notepad++:是否有任何插件或正则表达式或宏可以将长文本拆分为句子边界

我正在从事翻译工作,这需要我在句子边界处分拆长页或段落,即英语的句号 (.) 和印地语的 Poorn-Viraam (।)。

这被称为“对齐”或(可能)标记化。

对于 Notepad++ (w9-32 位),​​是否有任何插件或正则表达式或宏可以将长文本拆分为句子。(在纯文本 txt 文件中)。,

在正则表达式中,我无法直接找到 . 并将其替换为 .\r\n,因为 . 也用作缩写表示,例如,在 ie 中,例如 pvt.、ltd.、inc. 等。因此它也会替换那里,这是不可取的。此外,如果括号 () [] {} 中有多个句子,那么这些句子也不应该被破坏。

因此,我猜测单个正则表达式命令是不够的,或者它会变得太复杂而无法处理所有可能性。

它必须是一组接连执行的正则表达式,或者是一个宏,

或者是否有人为此开发了一些附加组件?

谢谢。

拉瓦特

答案1

正如塞斯所解释的那样,真的要正确做到这一点,需要自然语言解析。目前,这只能通过专门的实现来实现,例如斯坦福解析器,但不是 Notepad++ 插件。但是,根据一些基本假设,我认为您可以使用简单的正则表达式来解决这个问题。

我首先假设要拆分的句子以“.”结尾,然后有一个空格,然后是一个大写字母。这并不完美,但可以避免括号和缩写问题在多数情况下

所以...

\. [A-Z]

也许,如果句子以数字开头......

\. [A-Z\d]

然后,也许可以使其更加防空格,并更好地处理括号:

\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]
  • \s+ - 匹配一个或多个空格字符
  • [^)]}]*? 确保 . 后面没有右括号或空格

我想您可以根据您的使用情况对此进行更多尝试......

编辑:
我对此思考了很久。我认为你也可以假设,虽然一个句子可以开始只有一个字母(比如单词“I”或“A”),它不太可能结尾在一个字母的单词上(英文)。

所以你可以使用

[a-zA-Z]{2}\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]

作为一个总体策略,它只是归结为回顾和展望,寻找你期望或不期望在句子结尾或开头找到的东西。

相关内容