[英]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.