Main Content

日本語言語サポート

このトピックは、日本語のテキストをサポートする Text Analytics Toolbox™ の機能についてまとめています。日本語のテキスト データを解析する方法を示す例については、日本語のテキスト データの解析を参照してください。

トークン化

関数 tokenizedDocument は、日本語の入力を自動的に検出します。あるいは、tokenizedDocument'Language' オプションを 'ja' に設定します。このオプションは、トークンの言語の詳細を指定します。トークンの言語の詳細を表示するには、tokenDetails を使用します。これらの言語の詳細によって、関数 removeStopWordsaddPartOfSpeechDetailsnormalizeWordsaddSentenceDetails、および addEntityDetails のトークンに対する動作が決まります。

トークン化のための追加の MeCab オプションを指定するには、mecabOptions オブジェクトを作成します。指定された MeCab トークン化オプションを使用してトークン化するには、tokenizedDocument'TokenizeMethod' オプションを使用します。

日本語のテキストのトークン化

tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。

str = [
    "恋に悩み、苦しむ。"
    "恋の悩みで苦しむ。"
    "空に星が輝き、瞬いている。"
    "空の星が輝きを増している。"];
documents = tokenizedDocument(str)
documents = 
  4x1 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,:).Token
ans = 11x1 string
    "マリー"
    "さん"
    "ボストン"
    "ニューヨーク"
    "鈴木"
    "さん"
    "東京"
    "大阪"
    "東京"
    "新宿"
    "渋谷"

ストップ ワード

トークンの言語の詳細に従って文書からストップ ワードを削除するには、removeStopWords を使用します。日本語のストップ ワードのリストについては、stopWords'Language' オプションを 'ja' に設定します。

日本語のストップ ワードの削除

tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。

str = [
    "ここは静かなので、とても穏やかです"
    "企業内の顧客データを利用し、今年の売り上げを調べることが出来た。"
    "私は先生です。私は英語を教えています。"];
documents = tokenizedDocument(str);

removeStopWords を使用してストップ ワードを削除します。この関数は、documents の言語の詳細を使用して、どの言語のストップ ワードを削除するかを決定します。

documents = removeStopWords(documents)
documents = 
  3x1 tokenizedDocument:

     4 tokens: 静か 、 とても 穏やか
    10 tokens: 企業 顧客 データ 利用 、 今年 売り上げ 調べる 出来 。
     5 tokens: 先生 。 英語 教え 。

レンマ化

トークンの言語の詳細に従ってトークンをレンマ化するには、normalizeWords を使用し、'Style' オプションを 'lemma' に設定します。

日本語のテキストのレンマ化

関数 tokenizedDocument を使用して日本語のテキストをトークン化します。関数は、日本語のテキストを自動的に検出します。

str = [
    "空に星が輝き、瞬いている。"
    "空の星が輝きを増している。"
    "駅までは遠くて、歩けない。"
    "遠くの駅まで歩けない。"];
documents = tokenizedDocument(str);

normalizeWords を使用してトークンをレンマ化します。

documents = normalizeWords(documents)
documents = 
  4x1 tokenizedDocument:

    10 tokens: 空 に 星 が 輝く 、 瞬く て いる 。
    10 tokens: 空 の 星 が 輝き を 増す て いる 。
     9 tokens: 駅 まで は 遠い て 、 歩ける ない 。
     7 tokens: 遠く の 駅 まで 歩ける ない 。

言語に依存しない機能

単語と n-gram のカウント

関数 bagOfWords および関数 bagOfNgrams は、言語に関係なく、tokenizedDocument の入力をサポートします。データを含む tokenizedDocument 配列がある場合、これらの関数を使用できます。

モデル化と予測

関数 fitlda および関数 fitlsa は、言語に関係なく、bagOfWords および bagOfNgrams の入力をサポートします。データを含む bagOfWords オブジェクトまたは bagOfNgrams オブジェクトがある場合、これらの関数を使用できます。

関数 trainWordEmbedding は、言語に関係なく、tokenizedDocument またはファイルの入力をサポートします。tokenizedDocument 配列または正しい形式のデータを含むファイルがある場合、この関数を使用できます。

参考

| | | | | | |

関連するトピック