【发布时间】:2011-09-22 09:24:07
【问题描述】:
假设我通过 wordnet 中的 synonyms() 函数拉取“帮助”的同义词并得到以下信息:
Str = synonyms("help")
Str
[1] "c(\"aid\", \"assist\", \"assistance\", \"help\")"
[2] "c(\"aid\", \"assistance\", \"help\")"
[3] "c(\"assistant\", \"helper\", \"help\", \"supporter\")"
[4] "c(\"avail\", \"help\", \"service\")"
然后我可以使用
得到一个字符串unique(unlist(lapply(parse(text=Str),eval)))
最后是这样的:
[1] "aid" "assist" "assistance" "help" "assistant" "helper" "supporter"
[8] "avail" "service"
上述过程是由 Gabor Grothendieck 提出的。他/她的解决方案很好,但我仍然想不通如果我将查询词更改为“公司”、“男孩”或其他人,会出现错误消息。
一个可能的原因可能是由于“公司”的“第六”同义词(请参见下文)是一个单独的术语,并且不遵循“c(\”company\“)”的格式。
synonyms("company")
[1] "c(\"caller\", \"company\")"
[2] "c(\"company\", \"companionship\", \"fellowship\", \"society\")"
[3] "c(\"company\", \"troupe\")"
[4] "c(\"party\", \"company\")"
[5] "c(\"ship's company\", \"company\")"
[6] "company"
谁能帮我解决这个问题。 非常感谢。
【问题讨论】:
-
我写了一个可行的代码,分享给大家:unique(Str[which(str_detect(Str,"[(]")==FALSE)], unlist(lapply(parse(text=Str[其中(str_detect(Str,"[(]")==TRUE)]),eval))))