[英]Creating POS tags for single words/tokens in R
我正在寻找一种从R中的列表中为单个单词/标记创建POS标签的方法。我知道,如果我对单个标记而不是句子执行此操作,准确性将会降低,但是我拥有的数据是“删除编辑”从Wikipedia上删除,人们通常会删除单个未连接的单词,而不是整个句子。 对于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
我发现有些网站在网上这样做,但是我怀疑它们是否在R中运行任何东西。它们还明确声明不要在单个单词/令牌上使用它。
因此,我的问题是:是否可以在R中以合理的精度执行此操作? 代码看起来如何不包含句子结构? 将列表与带有标签的巨大日记进行比较会更容易吗?
通常,本机R中没有合适的后标记器,并且所有可能的解决方案都依赖于外部库。 作为此类解决方案之一,您可以在后端使用spaCy
尝试使用我们的软件包spacyr
。 它尚未在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的详细说明。
Windows: https : //github.com/kbenoit/spacyr/blob/master/inst/doc/WINDOWS.md
Mac: https : //github.com/kbenoit/spacyr/blob/master/inst/doc/MAC.md
这是为使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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.