日本語言語サポート
このトピックは、日本語のテキストをサポートする Text Analytics Toolbox™ の機能についてまとめています。日本語のテキスト データを解析する方法を示す例については、日本語のテキスト データの解析を参照してください。
トークン化
関数 tokenizedDocument は、日本語の入力を自動的に検出します。あるいは、tokenizedDocument の 'Language' オプションを 'ja' に設定します。このオプションは、トークンの言語の詳細を指定します。トークンの言語の詳細を表示するには、tokenDetails を使用します。これらの言語の詳細によって、関数 removeStopWords、addPartOfSpeechDetails、normalizeWords、addSentenceDetails、および addEntityDetails のトークンに対する動作が決まります。
トークン化のための追加の MeCab オプションを指定するには、mecabOptions オブジェクトを作成します。指定された MeCab トークン化オプションを使用してトークン化するには、tokenizedDocument の 'TokenizeMethod' オプションを使用します。
日本語のテキストのトークン化
tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。
str = [
"恋に悩み、苦しむ。"
"恋の悩みで苦しむ。"
"空に星が輝き、瞬いている。"
"空の星が輝きを増している。"];
documents = tokenizedDocument(str)documents =
4×1 tokenizedDocument:
6 tokens: 恋 に 悩み 、 苦しむ 。
6 tokens: 恋 の 悩み で 苦しむ 。
10 tokens: 空 に 星 が 輝き 、 瞬い て いる 。
10 tokens: 空 の 星 が 輝き を 増し て いる 。
品詞の詳細
既定では、関数 tokenDetails はトークンの詳細とともに品詞の詳細を含めます。
日本語テキストの品詞の詳細の取得
tokenizedDocument を使用して日本語のテキストをトークン化します。
str = [
"恋に悩み、苦しむ。"
"恋の悩みで 苦しむ。"
"空に星が輝き、瞬いている。"
"空の星が輝きを増している。"
"駅までは遠くて、歩けない。"
"遠くの駅まで歩けない。"
"すもももももももものうち。"];
documents = tokenizedDocument(str);日本語のテキストの場合、tokenDetails を使用して品詞の詳細を取得できます。英語のテキストの場合、最初に addPartOfSpeechDetails を使用しなければなりません。
tdetails = tokenDetails(documents); head(tdetails)
Token DocumentNumber LineNumber Type Language PartOfSpeech Lemma Entity
_______ ______________ __________ ___________ ________ ____________ _______ __________
"恋" 1 1 letters ja noun "恋" non-entity
"に" 1 1 letters ja adposition "に" non-entity
"悩み" 1 1 letters ja verb "悩む" non-entity
"、" 1 1 punctuation ja punctuation "、" non-entity
"苦しむ" 1 1 letters ja verb "苦しむ" non-entity
"。" 1 1 punctuation ja punctuation "。" non-entity
"恋" 2 1 letters ja noun "恋" non-entity
"の" 2 1 letters ja adposition "の" non-entity
固有表現認識
既定では、関数 tokenDetails はトークンの詳細とともにエンティティの詳細を含めます。
日本語テキストへの固有表現タグの追加
tokenizedDocument を使用して日本語のテキストをトークン化します。
str = [
"マリーさんはボストンからニューヨークに引っ越しました。"
"駅へ鈴木さんを迎えに行きます。"
"東京は大阪より大きいですか?"
"東京に行った時、新宿や渋谷などいろいろな所を訪れました。"];
documents = tokenizedDocument(str);日本語のテキストの場合、固有表現タグがソフトウェアによって自動的に追加されるため、関数 addEntityDetails を使用する必要はありません。このソフトウェアは、個人の名前、場所、組織、およびその他の固有表現を検出します。エンティティの詳細を表示するには、関数 tokenDetails を使用します。
tdetails = tokenDetails(documents); head(tdetails)
Token DocumentNumber LineNumber Type Language PartOfSpeech Lemma Entity
____________ ______________ __________ _______ ________ ____________ ____________ __________
"マリー" 1 1 letters ja proper-noun "マリー" person
"さん" 1 1 letters ja noun "さん" person
"は" 1 1 letters ja adposition "は" non-entity
"ボストン" 1 1 letters ja proper-noun "ボストン" location
"から" 1 1 letters ja adposition "から" non-entity
"ニューヨーク" 1 1 letters ja proper-noun "ニューヨーク" location
"に" 1 1 letters ja adposition "に" non-entity
"引っ越し" 1 1 letters ja verb "引っ越す" non-entity
"person"、"location"、"organization"、または "other" のエンティティでタグ付けされた単語を表示します。これらの単語は、"non-entity" のタグが付けられていない単語です。
idx = tdetails.Entity ~= "non-entity";
tdetails(idx,:).Tokenans = 11×1 string
"マリー"
"さん"
"ボストン"
"ニューヨーク"
"鈴木"
"さん"
"東京"
"大阪"
"東京"
"新宿"
"渋谷"
ストップ ワード
トークンの言語の詳細に従って文書からストップ ワードを削除するには、removeStopWords を使用します。日本語のストップ ワードのリストについては、stopWords の 'Language' オプションを 'ja' に設定します。
日本語のストップ ワードの削除
tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。
str = [
"ここは静かなので、とても穏やかです"
"企業内の顧客データを利用し、今年の売り上げを調べることが出来た。"
"私は先生です。私は英語を教えています。"];
documents = tokenizedDocument(str);removeStopWords を使用してストップ ワードを削除します。この関数は、documents の言語の詳細を使用して、どの言語のストップ ワードを削除するかを決定します。
documents = removeStopWords(documents)
documents =
3×1 tokenizedDocument:
4 tokens: 静か 、 とても 穏やか
10 tokens: 企業 顧客 データ 利用 、 今年 売り上げ 調べる 出来 。
5 tokens: 先生 。 英語 教え 。
レンマ化
トークンの言語の詳細に従ってトークンをレンマ化するには、normalizeWords を使用し、'Style' オプションを 'lemma' に設定します。
日本語のテキストのレンマ化
関数 tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。
str = [
"空に星が輝き、瞬いている。"
"空の星が輝きを増している。"
"駅までは遠くて、歩けない。"
"遠くの駅まで歩けない。"];
documents = tokenizedDocument(str);normalizeWords を使用してトークンをレンマ化します。
documents = normalizeWords(documents)
documents =
4×1 tokenizedDocument:
10 tokens: 空 に 星 が 輝く 、 瞬く て いる 。
10 tokens: 空 の 星 が 輝き を 増す て いる 。
9 tokens: 駅 まで は 遠い て 、 歩ける ない 。
7 tokens: 遠く の 駅 まで 歩ける ない 。
言語に依存しない機能
単語と n-gram のカウント
関数 bagOfWords および関数 bagOfNgrams は、言語に関係なく、tokenizedDocument の入力をサポートします。データを含む tokenizedDocument 配列がある場合、これらの関数を使用できます。
モデル化と予測
関数 fitlda および関数 fitlsa は、言語に関係なく、bagOfWords および bagOfNgrams の入力をサポートします。データを含む bagOfWords オブジェクトまたは bagOfNgrams オブジェクトがある場合、これらの関数を使用できます。
関数 trainWordEmbedding は、言語に関係なく、tokenizedDocument またはファイルの入力をサポートします。tokenizedDocument 配列または正しい形式のデータを含むファイルがある場合、この関数を使用できます。
参考
tokenizedDocument | removeStopWords | stopWords | addPartOfSpeechDetails | tokenDetails | normalizeWords | addLanguageDetails | addEntityDetails