NSLinguisticTaggerとは?
テキストを形態素解析と品詞分解してくれるクラス
形態素解析のコードを書いてみる
今回はPlaygroundで
import UIKit
var text = "伊能忠敬は全国を歩いて測量の旅をしたよ"
// "ja" = 日本語
// "en" = 英語
let tagger = NSLinguisticTagger(tagSchemes: NSLinguisticTagger.availableTagSchemes(forLanguage: "ja"), options: 0)
tagger.string = text
tagger.enumerateTags(in: NSRange(location: 0, length: text.characters.count),
scheme: NSLinguisticTagSchemeTokenType,
options: [.omitWhitespace]) { tag, tokenRange, sentenceRange, stop in
let subString = (text as NSString).substring(with: tokenRange)
print("\(subString) : \(tag)")
}
これを実行すると
品詞分解をやってみる
英語はしっかりと品詞分解までやってくるそうなのでやってみます
日本語は対応してないみたい
コードの変更点
言語は"en"(英語)に変更
schemeを"NSLinguisticTagSchemeLexicalClass"に変更
import UIKit
var text = "Tadataka Ino traveled the whole country and made a journey of surveying"
// "ja" = 日本語
// "en" = 英語
let tagger = NSLinguisticTagger(tagSchemes: NSLinguisticTagger.availableTagSchemes(forLanguage: "en"), options: 0)
tagger.string = text
tagger.enumerateTags(in: NSRange(location: 0, length: text.characters.count),
scheme: NSLinguisticTagSchemeLexicalClass,
options: [.omitWhitespace]) { tag, tokenRange, sentenceRange, stop in
let subString = (text as NSString).substring(with: tokenRange)
print("\(subString) : \(tag)")
}
実行するとこんな感じ
if文を使えば名詞(Noun)や動詞(Verb)のみを抽出もできたので参考になれば
if (tag == "Noun")