在python中检测文本中的缩写

7 python nlp

我想在文本中找到缩写并将其删除。我目前正在做的是识别连续的大写字母并将其删除。

但我发现它并没有删除诸如MOOCs, M.O.O.C,之类的缩写M.O.O.Cs。在 python 中是否有一种简单的方法可以做到这一点?或者有什么库可以代替吗?

Xeo*_*her 7

re则表达式库可能是完成这项工作的工具。

为了删除每串连续的大写字母,可以使用以下代码:

import re
mytext = "hello, look an ACRONYM"
mytext = re.sub(r"\b[A-Z]{2,}\b", "", mytext)
Run Code Online (Sandbox Code Playgroud)

此处,正则表达式"\b[A-Z]{2,}\b"搜索多个连续(由 表示[...]{2,})大写字母 ( A-Z),形成一个完整的单词 ( \b...\b)。然后它用第二个字符串 替换它们""

正则表达式的便利之处在于它可以轻松地针对更复杂的情况进行修改。例如:

mytext = re.sub(r"\b[A-Z\.]{2,}\b", "", mytext)
Run Code Online (Sandbox Code Playgroud)

将替换连续的大写字母和句号,删除 ABCD 和 ABCD 等缩写词。前面\.是必需的,.否则正则表达式将其用作一种通配符。

说明符?还可用于删除以 s 结尾的首字母缩略词,例如:

mytext = re.sub(r"\b[A-Z\.]{2,}s?\b", "", mytext)
Run Code Online (Sandbox Code Playgroud)

此正则表达式将删除诸如 ABCD、ABCD 甚至 ABCD 之类的首字母缩略词。如果需要删除其他形式的首字母缩写词,可以轻松修改正则表达式以适应它们。

re库还包括 findall 或 match 函数等函数,允许程序单独定位和处理每个首字母缩略词。例如,如果您想查看要删除的首字母缩略词列表并检查其中是否有合法单词,这可能会派上用场。

  • 此表达式匹配以至少三个大写字母开头的部分单词。例如:“TESting”与“TES”匹配。此外,如果一个句子与其后面的句子之间缺少空格,则第二个句子的第一个单词将被删除。例如“测试这个表达式。然后另一个句子。”将删除“.Then”。 (2认同)