r - 以 r 中的科学参考编号结尾的单独句子
问题描述
我正在做一个项目,其中一个步骤是将科学文章的文本分成句子。为此,我正在使用textrank
我理解它寻找.
或?
等!
来识别标记化句子的结尾。
我遇到的问题是以句号结尾的句子,后面直接跟一个参考号(也可能在括号中)。下面的例子代表了我迄今为止识别和收集的模式。
xx = c ("hello.1 World", "hello.1,2 World", "hello.(1) world", "hello.(1,2) World", "hello.[1,2] World", "hello.[1] World")
我做了一些搜索,看起来“句子边界检测”本身就是一门科学,可以变得复杂且特定于领域。
我能想到的解决这个问题的唯一方法(至少在我的情况下)是编写一个正则表达式,在句点之后添加一个空格,以便textrank
可以使用其通常的模式来识别它。
任何建议如何使用 R 中的正则表达式来做到这一点?我尽力在网上搜索,但找不到答案。
这个问题解释了如何在小写字母和大写字母之间添加空格。在我的情况下,在 R 中的字符串中的两个字母之间添加空格 ,我相信我需要在字母之间添加空格,然后是句点和数字/括号。
我的预期输出是这样的:
("hello. 1 World", "hello. 1,2 World", "hello. (1) world", "hello. (1,2) World", "hello. [1,2] World", "hello. [1] World")
谢谢
解决方案
对于您提供给我们的确切示例输入,您可以对以下模式进行正则表达式搜索:
\.(?=\d+|\(\d+(?:,\d+)*\)|\[\d+(?:,\d+)*\])
然后用点替换,后跟一个空格。示例脚本:
xx <- c("hello.1 World", "hello.1,2 World", "hello.(1) world", "hello.(1,2) World",
"hello.[1,2] World", "hello.[1] World")
output <- gsub("\\.(?=\\d+|\\(\\d+(?:,\\d+)*\\)|\\[\\d+(?:,\\d+)*\\])", ". ", xx, perl=TRUE)
output
[1] "hello. 1 World" "hello. 1,2 World" "hello. (1) world"
[4] "hello. (1,2) World" "hello. [1,2] World" "hello. [1] World"
推荐阅读
- reactjs - React Hooks 和 React 生命周期方法
- matlab - 使用 QR 分解 (MATLAB) 求解线性回归模型
- html - 在 Github Flavored Markdown 中水平居中表格
- python-3.x - DHCP嗅探python3
- angular - MatDialog 的背景在 Angular 中显示为灰色板
- c# - 如何在 ResourceDictionary 的 CombinedGeometry-tag 中使用从 InkScape 导出的 Xaml 多边形
- vue.js - 如何使用 Vuetify 在同一页面上定位多个对话框
- redcap - REDCap - 在数据中搜索条件后发送自动电子邮件
- r - 模式中允许的具有有限功能集的 R 胶水?
- c# - Linq GroupBy 查询语法等效