У меня есть вектор предложений, таких как:нечеткого соответствия строки и регулярные выражения
example <- c("text text word1 text text word2 text text", ...)
, и я пытаюсь определить, какие предложения соблюдать следующие правила:
- предложение содержит как " word1" и „word2“
- „word1“ предшествует „word2“
- есть между нулем и тремя словами между „word1“ и „word2“
Это можно сделать с помощью обычного регулярного выражения. Однако проблема заключается в том, что слово «word1» или «word2» может содержать опечатки (я ожидаю, что на обоих словах не больше 3). Примерами опечаток могут быть «wrod1», «woord2», «wrd1» и т. Д. Я также хочу сопоставить предложения, содержащие опечатки для этих слов, в пределах расстояния. Поэтому я пытался использовать agrepl
:
agrepl("(?:.*?)\\bword1\\b(?:\\s(?:\\w+\\s){0,3})\\bword2\\b(?:.*?)", example, fixed=FALSE, max=3)
Однако, я считаю, что расстояние вычисляется с целым предложением, а не только с «word1» и «word2», и поэтому я почти никогда не получить какие-либо матчи в этом случае. Любые предложения о том, как исправить это, или agrepl/regex не лучший инструмент для этой проблемы?
Я вижу большую проблему здесь с опечаткой неоднозначностью. Как можно быть уверенным, что 'woord2' не' coord2'? Как мы можем идентифицировать экземпляры 'word'? Возможным решением может быть, пожалуй, извлечение пар слов из строки в определенных местах и проверка их с помощью «adist». –
В этом случае мне все же было бы полезно, если бы совпадение вернуло 'TRUE', так как меня интересует контекст предложения. Смысл, соответствующая информация, которую мне нужно извлечь из этого, заключается в том, что слово «word2» появилось после слова «word1» (с или без опечаток для) для этого предложения и с учетом других ограничений. – drgxfs
Это может быть женский комментарий, но, возможно, стоит подумать о том, чтобы сломать предложение на слова и оценить выражение для каждого слова, это решило бы вычислительные проблемы, связанные с вычислением нежелательных расстояний для всего предложения. Затем вы можете оценить объекты среднего уровня, чтобы увидеть, сколько слов написано правильно или неправильно написано, и затем, в зависимости от применяемых критериев, объедините его обратно к одному предложению по желанию. – Konrad