FastText language_identification 针对每个原始文本返回多个预测,并且也无法指示哪些预测属于哪个原始文档。
每个原始文档的预测数量也不同——他们的 GitHub 论坛现在已关闭,但有人知道如何将输出与原始文本匹配吗?
代码:
DF = data.frame(doc_id = seq(1, 5),
speechtext = c("Hello. Fake text entry 1.", "Fake text entry 2", "more text", "Text in a
different language", "Hola"))
library(fastText)
# download .ftz pretrained model from https://fasttext.cc/docs/en/language-identification.html
file_ftz = system.file("language_identification/lid.176.ftz", package = "fastText")
lang1 = language_identification(DF$speechtext,
pre_trained_language_model_path = file_ftz,
verbose = T)
我期望每个原始文本都有一个预测,或者至少有一个一致的数字,或者某种标记预测与哪个文档一致的方式。
实际上,我可以根据输出的几个元素的每个系列的最大数量进行猜测,但这似乎不是最佳的 - 它看起来确实像一个错误。
(我尝试添加 intern = T 作为每个 R - fasttext 如何从命令行将输出加载到数据帧中的参数 - 这不被识别为参数)。
fastText::language_identification()
有效路径的有效字符串您的输入数据中有换行符,因此每行您将得到一个预测。您有两个选择:其中每行代表不同的文本摘录或文本摘录向量(强调我的)
在下面的正则表达式中,我使用了 PCRE
\v
,它匹配换行符和任何被视为垂直空白的字符。现在生成五行,每一行与每个输入行相关。
language_identification(gsub("\\v", " ", DF$speechtext, perl = TRUE), file_ftz)
# iso_lang_1 prob_1
# <char> <num>
# 1: en 0.220767
# 2: en 0.388695
# 3: en 0.613707
# 4: en 0.757671
# 5: es 0.721487
\v
包含多个垂直空格字符(例如换页符和行分隔符),因此应涵盖所有可能的换行类型。有关完整详细信息,请参阅表格此处。 按行映射文档 ID
# As before
lang1 <- language_identification(DF$speechtext, file_ftz)
# Add document IDs
lang1$doc_id <- rep(
DF$doc_id,
lengths(strsplit(DF$speechtext, "\\v", perl = TRUE))
)
lang1
# iso_lang_1 prob_1 doc_id
# <char> <num> <int>
# 1: en 0.220767 1
# 2: en 0.388695 2
# 3: en 0.613707 3
# 4: en 0.932691 4
# 5: en 0.571937 4
# 6: es 0.721487 5