提问人:Sergio A. Gottret Rios 提问时间:1/30/2023 最后编辑:neilfwsSergio A. Gottret Rios 更新时间:1/31/2023 访问量:106
如何使用带有个性化数据的 SpacyR 提取实体名称?
How to extract entities names with SpacyR with personalized data?
问:
下午好
我正在尝试对不同长度的规范性文本进行分类,并标记词性 (POS)。为此,我使用了 tm 和 udpipe 库,并给出了数据库的长度。
我需要执行的另一项任务是识别实体。我尝试了 SpacyR 库,但它无法正确识别组织的名称,因此我想根据语料库中的一些文档训练自定义 NER 模型,我亲自验证了这些文档。
如何使用自定义数据“spacy_extract_entity()”?或者也许使用 quanteda 和 spacyr?
提前致谢。
我以这种方式完成了 POS 任务。我生成了几个函数。
suppressMessages(suppressWarnings(library(pdftools)))
suppressMessages(suppressWarnings(library(tidyverse)))
suppressMessages(suppressWarnings(library(tm)))
# load the corpus
tm_corpus <- VCorpus(DirSource(
"working_path,
pattern = ".pdf"),readerControl = list(reader = readPDF, language = 'es-419'))
# load udpipe
library(udpipe)
dl <- udpipe_download_model(language = "spanish", overwrite = FALSE)
str(dl)
udmodel_spanish <- udpipe_load_model(file = dl$file_model)
# functions to annotate the corpus
f_udpipe_anot <- function(n){
txt <- as.character(tm_corpus[[n]]) %>% #lista simia
unlist()
y <- udpipe_annotate(udmodel_spanish, x = txt, trace = TRUE)
y <- as.data.frame(y)
}
pinkillazo <- function(desde, hasta){
resultado <- data.frame()
for (item in desde:hasta){
print(item)
resultado <- rbind(resultado, f_udpipe_anot(item))
}
return(resultado)
}
leyes_udpipe_POS <- pinkillazo(1,13) # here I got the annotated corpus as a dataframe
为了识别命名实体,我尝试了以下方法:
spacyr::spacy_initialize(model = "es_core_news_sm")
quan_corpus <- corpus(tm_corpus)
POS_df_spacyr <- spacy_parse(quan_corpus, lemma = FALSE, entity = TRUE, tag = FALSE, pos = TRUE)
organiz <- spacy_extract_entity(
quan_corpus,
output = c("data.frame", "list"),
type = c("all", "named", "extended"),
multithread = TRUE,
)
我得到了错误的组织名称以及其他错误规范。使用多线程,我很难简化这项任务,但事实并非如此。
答:
0赞
anon
1/31/2023
#1
如果要在 R 中训练自己的命名实体识别模型,可以使用 R 包 crfsuite 和 R 包 nametagger,它们分别是条件随机场和最大熵模型,可以与 udpipe 注释一起使用。
如果你想要深度学习模型,你可能必须研究 torch 以及 sentencepiece 等标记器和 word2vec 等嵌入技术来实现你自己的建模流程(例如 BiLSTM)。
评论
0赞
Sergio A. Gottret Rios
1/31/2023
谢谢你的建议。我以前尝试过nametagger,但它仅适用于英语和捷克语,而我正在处理西班牙语文本。但是,cfrsuite 似乎可以使用与支持的相同语言的 udpipe 一起使用。我会试试这个 x <- ner_download_modeldata(“conll2002-es”)
0赞
2/1/2023
列出的软件包允许使用自己的数据训练自己的模型,或者为模型构建提供构建块,可以使用任何语言。它们没有提供广泛的预训练模型套件。
评论