繁体   English   中英

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

[英]How to detect the dominant language of a text word?

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

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

结果:

语言是英语
语言是bn
语言是ar
语言是

我错过的“未知语言”

仅仅因为它属于太多的语言,并且基于一个单词来猜测该语言是不现实的。 上下文总是有帮助的。

例如 :

import NaturalLanguage

let recognizer = NLLanguageRecognizer()
recognizer.processString("Islam")
print(recognizer.dominantLanguage!.rawValue)  //Force unwrapping for brevity

打印tr ,代表土耳其语。 这是有根据的猜测。

如果您还希望使用其他语言,则可以使用languageHypotheses(withMaximum:)

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 

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


语言代码可以在这里找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM