Я работаю над проектом, в котором одним из шагов является разделение текста научных статей на предложения. Для этого я использую 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+)
. Замените каждое совпадение на.
, т. Е. Точку, за которой следует пробел - person Gurmanjot Singh   schedule 05.03.2021\D
, поэтому я не добавляю пробел в десятичные дроби.\D\.(?=[[(]?\d+)
regex101.com/r/vffKdU/1 - person Bahi8482   schedule 05.03.2021