2014-12-09 2 views
0

Моя цель: Я пытаюсь распознать местоположение в твиттере (если он существует).Именованное распознавание сущности для твитов с использованием R

Я попытался с помощью пакета OpenNLP и врезался в «из памяти ошибки» несколько раз, несмотря на увеличение размера кучи памяти. Код заканчивается после определения местоположения для 6-8 твитов.

Меня интересует только 100-150 мест (список областей), но соответствие каждого слова в твите со списком для коллекции твитов крайне неэффективно.

Я хотел знать, есть ли любые подходящие пакеты, которые могут включать NER для данных твиттера, используя R, кроме «NLP»?

Также был бы наиболее эффективный способ выполнить эту процедуру?

Я не очень хорошо знакомы с питоном/Java, следовательно, хотел бы использовать R.

Спасибо.

ответ

0

Хорошо, поэтому я отсортировал проблему с памятью. Я неоднократно импортировал модели для каждого твита. , поэтому я добавил, что бит сейчас ... отлично.

Вот мой код:

#Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 64-bit version\ 

#Sys.setenv(JAVA_HOME='C:\\Program Files (x86)\\Java\\jre7') # for 32-bit version 

#library(rJava) 

#install.packages("openNLPmodels.en_1.5-1.tar.gz", repos = "http://datacube.wu.ac.at/", type = "source") 

#library(openNLP) 

#library(NLP) 

#install en-ner-location.bin from http://opennlp.sourceforge.net/models-1.5/ and save in location given below 



for(i in 1:nrow(quake1)) 

{ 

s<-quake1$text[i] 

#sent_token_annotator <- Maxent_Sent_Token_Annotator() 

#word_token_annotator <- Maxent_Word_Token_Annotator() 

a2 <- annotate(s, list(sent_token_annotator, word_token_annotator)) 

#entity_annotator <- Maxent_Entity_Annotator(kind="location",language="en",model='C:\\Program Files\\R\\R-3.1.1\\library\\openNLP\\en-ner-location.bin') 

a3<-entity_annotator(s, a2) 

location<-"" 

if(length(a3)>0) { 

for(j in 1:length(a3)) 

location<-paste(location,substring(s,a3$start[j],a3$end[j]),sep=";") 

} 

quake1$location[i]<-location 

} 

Новая цель: Я хочу, чтобы обеспечить места как #SanJose также определены. Поскольку большинство местоположений hashtags w.r.t имеют одну строку.

+0

Используйте регулярное выражение. вероятно, будет выглядеть примерно так: # [A-Za-z] [a-z] + ([A-Z] [a-z] +) * " – yeedle

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