Main Content

normalizeWords

単語のステミングまたはレンマ化

説明

normalizeWords を使用して、単語を語根形に短縮します。英語の単語を "レンマ化" (それらを辞書形に短縮) するには、'Style' オプションを 'lemma' に設定します。

関数は、英語、日本語、ドイツ語、および韓国語のテキストをサポートしています。

updatedDocuments = normalizeWords(documents) は、documents 内の単語を語根形に短縮します。英語とドイツ語のテキストの場合、関数は、既定でそれぞれ英語とドイツ語のテキストに対応する Porter ステマーを使用して単語をステミングします。日本語と韓国語のテキストの場合、関数は、既定で MeCab トークナイザーを使用して単語をレンマ化します。

updatedWords = normalizeWords(words) は、string 配列 words 内の各単語を語根形に短縮します。

updatedWords = normalizeWords(words,'Language',language) は単語の短縮に加えて単語の言語も指定します。

___ = normalizeWords(___,'Style',style) は、正規化スタイルも指定します。たとえば、normalizeWords(documents,'Style','lemma') は、入力文書内の単語をレンマ化します。

すべて折りたたむ

Porter ステマーを使用して、文書配列内の単語をステミングします。

documents = tokenizedDocument([
    "a strongly worded collection of words"
    "another collection of words"]);
newDocuments = normalizeWords(documents)
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: a strongli word collect of word
    4 tokens: anoth collect of word

Porter ステマーを使用して、string 配列内の単語をステミングします。string 配列の各要素は、1 つの単語でなければなりません。

words = ["a" "strongly" "worded" "collection" "of" "words"];
newWords = normalizeWords(words)
newWords = 1x6 string
    "a"    "strongli"    "word"    "collect"    "of"    "word"

文書配列内の単語をレンマ化します。

documents = tokenizedDocument([
    "I am building a house."
    "The building has two floors."]);
newDocuments = normalizeWords(documents,'Style','lemma')
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: i be build a house .
    6 tokens: the build have two floor .

レンマ化を改善するには、最初に関数 addPartOfSpeechDetails を使用して品詞の詳細を文書に追加します。たとえば、文書に品詞の詳細が含まれている場合、normalizeWords は動詞の "building" のみを短縮し、名詞の "building" は短縮しません。

documents = addPartOfSpeechDetails(documents);
newDocuments = normalizeWords(documents,'Style','lemma')
newDocuments = 
  2x1 tokenizedDocument:

    6 tokens: i be build a house .
    6 tokens: the building have two floor .

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

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

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

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

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

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

str = [
    "Guten Morgen. Wie geht es dir?"
    "Heute wird ein guter Tag."];
documents = tokenizedDocument(str);

normalizeWords を使用してトークンをステミングします。

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

    8 tokens: gut morg . wie geht es dir ?
    6 tokens: heut wird ein gut tag .

入力引数

すべて折りたたむ

入力文書。tokenizedDocument 配列として指定します。

入力単語。string ベクトル、文字ベクトル、または文字ベクトルの cell 配列として指定します。words を文字ベクトルとして指定した場合、関数は引数を 1 つの単語として扱います。

データ型: string | char | cell

正規化スタイル。次のいずれかとして指定します。

  • 'stem' – Porter ステマーを使用して単語をステミングします。このオプションは、英語とドイツ語のテキストのみをサポートします。英語とドイツ語のテキストでは、この値が既定です。

  • 'lemma' – 各単語の辞書形を抽出します。このオプションは、英語、日本語、および韓国語のテキストのみをサポートします。単語が内部辞書にない場合、関数は単語を変更せずに出力します。英語のテキストの場合、出力は小文字になります。日本語と韓国語のテキストでは、この値が既定です。

この関数は、タイプが 'letters' および 'other' のトークンのみを正規化します。トークン タイプの詳細については、tokenDetails を参照してください。

ヒント

英語のテキストの場合、文書内の単語のレンマ化を改善するには、最初に関数 addPartOfSpeechDetails を使用して品詞の詳細を追加します。

単語の言語。次のいずれかとして指定します。

  • 'en' – 英語

  • 'de' – ドイツ語

言語を指定しない場合、ソフトウェアは言語を自動的に検出します。日本語または韓国語のテキストをレンマ化するには、tokenizedDocument 入力を使用します。

データ型: char | string

出力引数

すべて折りたたむ

更新された文書。tokenizedDocument 配列として返されます。

更新された単語。string 配列、文字ベクトル、または文字ベクトルの cell 配列として返されます。wordsupdatedWords のデータ型は同じになります。

アルゴリズム

すべて折りたたむ

言語の詳細

tokenizedDocument オブジェクトには、言語の詳細を含むトークンに関する詳細が含まれています。入力文書の言語の詳細によって、normalizeWords の動作が決まります。既定では、関数 tokenizedDocument は入力テキストの言語を自動的に検出します。言語の詳細を手動で指定するには、tokenizedDocumentLanguage オプションを使用します。トークンの詳細を表示するには、関数 tokenDetails を使用します。

バージョン履歴

R2017b で導入

すべて展開する