Извлечение выступлений ораторов из текста с использованием R? Или что-то другое? - PullRequest
0 голосов
/ 19 ноября 2018

Мы работаем над проектом по извлечению текста для школы о доле ориентированной на окружающую среду речи в Национальном собрании Квебека.Мы хотим извлечь список выступлений каждого оратора за эти годы.

Все наши документы отформатированы следующим образом:

Mr. Smith : Blablabla

Mrs. Jones : Blablabla

Я хотел бы написать простейшую вещь, которая могла быпозвольте мне извлечь эти вмешательства.Я думаю что-то вроде:

"Каждый раз, когда вы видите [Мистер ****:] ИЛИ [Миссис ****:], извлекайте ВСЕ текст, пока выувидеть другое вхождение [Mr. ****:] ИЛИ [Mrs. ****:]. И, в идеале, извлечь все данные о мистере Смитсе и миссис Джонсес и мистере Уильямсе в отдельные файлы, отслеживаяиз какого файла поступили вмешательства.

Я начал писать очень простую строку gsub, которая позволила мне заменить вхождения, которые я хотел заменить, на @, только чтобы понять, что я не хочучтобы заменить их полностью, а может быть, просто добавьте @ впереди, что, вероятно, облегчит написание чего-то, что просто разделит @s в отдельных файлах.

gsub("(Mr.|Mrs.)\\s\\w*\\s:\\s", "@", test)

Я только начал преподаватьЯ R для этого проекта, и мне нужно немного понять, как мне поступить дальше. Или я должен использовать что-то другое вместо этого?

1 Ответ

0 голосов
/ 19 ноября 2018

Если вы не хотите заменять имена динамиков, вы можете использовать так называемый «позитивный взгляд вперед», например:

# some example data:
bla <- c("Mr. X : blablabla bla bla bla. Mrs. Y : bla bla blablablab Mr. XY : bla bla balblabla blabl abl" )

# replace with look ahead:
gsub("(?=(Mr.|Mrs.))", "@ ", bla, perl = T)
"@ Mr. X : blablabla bla bla bla. @ Mrs. Y : bla bla blablablab @ Mr. XY : bla bla balblabla blabl abl"

@ - хорошая отправная точка для извлечения отдельных вмешательств. Это можно сделать так:

pattern <- "@.[^@]*" 
matches <- gregexpr(pattern, bla)
interventions <- regmatches(bla, matches)
interventions <- unlist(interventions)
interventions
[1] "@ Mr. X : blablabla bla bla bla. "      "@ Mrs. Y : bla bla blablablab "         "@ Mr. XY : bla bla balblabla blabl abl"
...