我的目标是:我试图识别在推特中的位置(如果它存在的话)。
我尝试使用Opennlp包,尽管增加了堆内存大小,但还是多次遇到“内存不足的错误”。代码在识别6-8条tweet的位置后终止。
我只对100到150个位置(作用域列表)感兴趣,但是将tweet中的每个单词与tweets列表中的每个单词匹配对于一个tweet集合来说是非常低效的。
我想知道,除了'NLP‘之外,是否有合适的包可以为twitter数据启用NER?
另外,执行这个常规的最有效的方法是什么?
我是,对python/不是很熟悉,所以我想使用R。
谢谢。
发布于 2014-12-09 06:21:48
好吧,所以我解决了记忆不足的问题。我为每条推特反复导入模型。因此,我评论了这位now..works很好。
这是我的代码:
#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这样的地点也被识别出来。因为大多数hashtag w.r.t位置都是单个字符串。
https://stackoverflow.com/questions/27370682
复制相似问题