Ios 如何检测文本词的主导语言?

Ios 如何检测文本词的主导语言?,ios,swift,nlp,nslinguistictagger,Ios,Swift,Nlp,Nslinguistictagger,对于字符串来说它看起来不错,但是对于单词来说它不起作用。当用户同时键入任意3个字符以检查用户键入的语言时,我正在按照我的要求进行搜索。如果我认为它不应该与detec0tword一起使用,但我认为它应该与Islamword一起使用 let tagger = NSLinguisticTagger(tagSchemes:[.tokenType, .language, .lexicalClass, .nameType, .lemma], options: 0) func determineLangua

对于
字符串
来说它看起来不错,但是对于
单词
来说它不起作用。当用户同时键入任意3个字符以检查用户键入的语言时,我正在按照我的要求进行搜索。如果我认为它不应该与
detec0t
word一起使用,但我认为它应该与
Islam
word一起使用

let tagger = NSLinguisticTagger(tagSchemes:[.tokenType, .language, .lexicalClass, .nameType, .lemma], options: 0)

func determineLanguage(for text: String) {
    tagger.string = text
    let language = tagger.dominantLanguage
    print("The language is \(language!)")
}


//Test case
determineLanguage(for: "I love Islam") // en -pass
determineLanguage(for: "আমি ইসলাম ভালোবাসি") // bn -pass
determineLanguage(for: "أنا أحب الإسلام") // ar -pass
determineLanguage(for: "Islam") // und - failed
结果:

语言是en
语言为bn
语言是ar
这种语言很难理解


我错过了“未知语言”

的原因仅仅是因为它属于太多的语言,根据一个单词猜测语言是不现实的。上下文总是有帮助的

例如:

import NaturalLanguage

let recognizer = NLLanguageRecognizer()
recognizer.processString("Islam")
print(recognizer.dominantLanguage!.rawValue)  //Force unwrapping for brevity
打印
tr
,表示土耳其语。这是一个有根据的猜测

如果您希望使用其他可能的语言,您可以使用:

哪张照片

现在,您可以定义一个可接受的置信阈值,以便接受该结果



可以找到语言代码

请告诉我好吗?我可以设置国家代码之前,可能在语言的中间。例如
Islam
将单词转换成3种语言英语、阿拉伯语、,Bangla@NazmulHasan您可以在
假设中比较与这些语言相关的置信度。在上面的例子中,英语最高,阿拉伯语和孟加拉语为
nil
。如果还不够清楚,你可以问一个新问题,随时给我贴标签。斋月卡里姆!斋月卡里姆!
let hypotheses = recognizer.languageHypotheses(withMaximum: 10)

for (lang, confidence) in hypotheses.sorted(by: { $0.value > $1.value }) {
    print(lang.rawValue, confidence)
}
tr 0.2332388460636139   //Turkish
hr 0.1371040642261505   //Croatian
en 0.12280254065990448  //English
pt 0.08051242679357529
de 0.06824589520692825
nl 0.05405258387327194
nb 0.050924140959978104
it 0.037797268480062485
pl 0.03097432479262352
hu 0.0288708433508873