自然语言识别和分配如“en”,“fr”,“tr”

时间:2018-02-12 13:00:16

标签: r nlp

是否有任何包用于识别哪种语言是R中的文本? 我有很多行,包括不同语言的文本,如“en”,“es”,“fr”,“ja”等等。是否有可能获得如下语言栏的结果?

id text                 language
1  "I am a musician"    en 
2  "я инженер"          ru 
3  "Je suis un poète"   fr

或者定义自然语言类型的其他任何可能的帮助?

1 个答案:

答案 0 :(得分:1)

您的最佳镜头可能是cldr,它使用的是Chrome的语言检测库。

library(devtools)
install_github("aykutfirat/cldr")

library(cldr)

docs1 <- c(
  "Detects the language of a set of documents with possible input hints. Returns the top 3 candidate languages and their probabilities as well.",
  "Som nevnt på møte forrige uke er det ulike ting som skjer denne og neste uke.",
  "Ganz besonders wollen wir, dass forthin allenthalben in unseren Städten, Märkten und auf dem Lande zu keinem Bier mehr Stücke als allein Gersten, Hopfen und Wasser verwendet und gebraucht werden sollen.",
  "Роман Гёте «Вильгельм Майстер» заложил основы воспитательного романа эпохи Просвещения.")

detectLanguage(docs1)$detectedLanguage
# [1] "ENGLISH" "NORWEGIAN" "GERMAN" "RUSSIAN"

但是,你的例子似乎有点太短了。

docs2 <- c("I am a musician", "я инженер", "Je suis un poète")

detectLanguage(docs2)$detectedLanguage
# [1] "Unknown" "Unknown" "Unknown"

正如Ben textcat所指出的那样,gulnerman给出的较短的例子似乎表现得更好,但与cldr不同,它并没有表明匹配的可靠性。这使得很难说你可以信任多少结果,即使在这种情况下三分之二是正确的。

library(textcat)
textcat(docs2)
# [1] "latin" "russian-iso8859_5" "french"