2015-02-25 1 views
0

Я пытаюсь создать учебные данные для поиска имени openNLP и буду признателен за любую помощь, которую вы могли бы предложить.Заменить все элементы в списке в текстовом файле

Если бы я был текстовый файл так:

Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. 
John Smith is chairman of Elsevier N.V., the Dutch publishing group. 

и список имен второго файла, таких как:

Pierre Vinken 
John Smith 

Будет ли способ, чтобы найти все упоминания о имена в текстовом файле и соответствующим образом помечать их в файле для создания учебных данных, так что файл теперь читается следующим образом:

<START:CEO> Pierre Vinken <END>, 61 years old, will join the board as a nonexecutive director Nov. 29. 
<START:CEO> John Smith <END> is chairman of Elsevier N.V., the Dutch publishing group. 

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

Я был бы признателен за решение, которое имеется в Notepad ++ или R, но при необходимости я также имею доступ к инструментам оболочки. Благодаря!

ответ

1
#using R 
x1<-"Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. John Smith is chairman of Elsevier N.V., the Dutch publishing group." 
y1<-c("Pierre Vinken","John Smith") 
y2<-paste0("<START:CEO> ",y1[1:2]," <END>") 
library(qdap) 
mgsub(y1,y2,x1) 
[1] "<START:CEO> Pierre Vinken <END>, 61 years old, will join the board as a nonexecutive director Nov. 29.<START:CEO> John Smith <END> is chairman of Elsevier N.V., the Dutch publishing group." 
0

Вот подход, использующий qdapRegex (который я поддерживаю). Это использует базу gsub (с использованием подхода группировки) и qdapRegex не нужно, но мне нравится легкость использования для group и pastex (я также покажу, как использовать чистую базу). Это делает одно регулярное выражение не нужным для mgsub. Это может быть медленнее, хотя используется fixed = FALSE, тогда как mgsub использует fixed = TRUE.

x1<-"Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. John Smith is chairman of Elsevier N.V., the Dutch publishing group." 
y1<-c("Pierre Vinken", "John Smith") 

## pacman used to load and if missing install qdapRegex 
if (!require("pacman")) install.packages("pacman") 
pacman::p_load(qdapRegex) 

gsub(pastex(group(y1)), "<START:CEO> \\1 <END>", x1, perl=TRUE) 

## [1] "<START:CEO> Pierre Vinken <END>, 61 years old, will join the board as a nonexecutive director Nov. 29. <START:CEO> <END> is chairman of Elsevier N.V., the Dutch publishing group." 

Чистая база

gsub(paste(sprintf("(%s)", y1), collapse="|"), 
    "<START:CEO> \\1 <END>", x1, perl=TRUE) 

 Смежные вопросы

  • Нет связанных вопросов^_^