我正在寻找一种方法来为我在R中的列表中的单个单词/标记创建POS标签。我知道如果我使用单个标记而不是句子,那么准确性会降低但我拥有的数据是& #34;删除编辑"来自维基百科和人们大多删除单个,未连接的单词而不是整个句子。我已经为Python看了几次这个问题,但我还没有在R中找到它的解决方案。
我的数据会像这样看起来像
Tokens <- list(c("1976","green","Normandy","coast","[", "[", "template" "]","]","Fish","visting","England","?"))
理想情况下,我想要回复此类内容:
1976 CD
green JJ
Normandy NN
coast NN
[ x
[ x
template NN
] x
] x
Fish NN
visiting VBG
England NN
? x
我在网上发现了一些websites,但我怀疑他们在R中运行任何东西。他们还特别声明不要在单个单词/代币上使用它。
我的问题因此:是否可以在R中以合理的准确度执行此操作?代码如何不包含句子结构?将这些列表与一个标记为大的日记进行比较会更容易吗?
答案 0 :(得分:2)
通常,本机R中没有像样的后标记器,所有可能的解决方案都依赖于外部库。作为此类解决方案之一,您可以在后端使用spacyr
尝试我们的包spaCy
。它不是在CRAN上,但很快就会出现。
https://github.com/kbenoit/spacyr
示例代码如下:
library(spacyr)
spacy_initialize()
Tokens <- c("1976","green","Normandy","coast","[", "[", "template", "]","]",
"Fish","visting","England","?")
spacy_parse(Tokens, tag = TRUE)
,输出如下:
doc_id sentence_id token_id token lemma pos tag entity
1 text1 1 1 1976 1976 NUM CD DATE_B
2 text2 1 1 green green ADJ JJ
3 text3 1 1 Normandy normandy PROPN NNP ORG_B
4 text4 1 1 coast coast NOUN NN
5 text5 1 1 [ [ PUNCT -LRB-
6 text6 1 1 [ [ PUNCT -LRB-
7 text7 1 1 template template NOUN NN
8 text8 1 1 ] ] PUNCT -RRB-
9 text9 1 1 ] ] PUNCT -RRB-
10 text10 1 1 Fish fish NOUN NN
11 text11 1 1 visting vist VERB VBG
12 text12 1 1 England england PROPN NNP GPE_B
13 text13 1 1 ? ? PUNCT .
虽然该软件包可以执行更多操作,但您可以在tag
字段中找到所需内容。
注:(2017-05-20)
现在spacyr
包在CRAN上,但该版本在非ascii字符方面存在一些问题。我们在CRAN提交后认识到了这个问题,并在github上的版本中解决了。如果您打算将其用于德语文本,请在github上安装最新的master。
devtools::install_github("kbenoit/spacyr", build_vignettes = FALSE)
此修订将在下次更新时合并到CRAN包中。
<强>注2:强>
有关于在Windows和Mac上安装spaCy和spacyr的详细说明。
视窗: https://github.com/kbenoit/spacyr/blob/master/inst/doc/WINDOWS.md
的Mac: https://github.com/kbenoit/spacyr/blob/master/inst/doc/MAC.md
答案 1 :(得分:1)
接下来我采取了让amatsuo_net的建议为我工作的步骤:
为anaconda安装spaCy和英语语言库:
以管理员身份打开Anaconda提示
执行:
activate py36
conda config --add channels conda-forge
conda install spacy
python -m spacy link en_core_web_sm en
使用Wrapper for R studio:
install.packages("fastmatch")
install.packages("RcppParallel")
library(fastmatch)
library(RcppParallel)
devtools::install_github("kbenoit/spacyr", build_vignettes = FALSE)
library(spacyr)
spacy_initialize(condaenv = "py36")
Tokens <- c("1976","green","Normandy","coast","[", "[", "template", "]","]","Fish","visting","England","?");Tokens
spacy_parse(Tokens, tag = TRUE)