メインコンテンツ

addPartOfSpeechDetails

R2026b

文書への品詞タグの追加

説明

addPartOfSpeechDetails を使用して、品詞タグを文書に追加します。

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

updatedDocuments = addPartOfSpeechDetails(documents) は、documents 内の品詞を検出し、トークンの詳細を更新します。この関数は、既定では、品詞タグを付けるためにテキストを再トークン化します。たとえば、この関数は "you're" という単語を "you" と "'re" というトークンに分割します。updatedDocuments から品詞の詳細を取得するには、tokenDetails を使用します。

例

updatedDocuments = addPartOfSpeechDetails(documents,Name=Value) は、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、addPartOfSpeechDetails(documents,DiscardKnownValues=true) は、以前に計算された詳細を破棄し、それらを再計算することを指定します。

ヒント

addPartOfSpeechDetails は、lower 関数、upper 関数、erasePunctuation 関数、normalizeWords 関数、removeWords 関数、および removeStopWords 関数を使用する前に使用します。addPartOfSpeechDetails は、これらの関数によって削除される情報を使用するためです。

例

すべて折りたたむ

サンプル データを読み込みます。ファイル sonnetsPreprocessed.txt には、シェイクスピアのソネット集の前処理されたバージョンが格納されています。ファイルには、1 行に 1 つのソネットが含まれ、単語がスペースで区切られています。sonnetsPreprocessed.txt からテキストを抽出し、テキストを改行文字で文書に分割した後、文書をトークン化します。

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

最初のいくつかのトークンの詳細を表示します。

tdetails = tokenDetails(documents);
head(tdetails)
       Token       DocumentNumber    LineNumber     Type      Language
    ___________    ______________    __________    _______    ________

    "fairest"            1               1         letters       en   
    "creatures"          1               1         letters       en   
    "desire"             1               1         letters       en   
    "increase"           1               1         letters       en   
    "thereby"            1               1         letters       en   
    "beautys"            1               1         letters       en   
    "rose"               1               1         letters       en   
    "might"              1               1         letters       en   

addPartOfSpeechDetails 関数を使用して、文書に品詞の詳細を追加します。この関数は、まず文書に文の情報を追加してから、tokenDetails によって返される table に品詞タグを追加します。最初のいくつかのトークンについて、更新されたトークンの詳細を表示します。

documents = addPartOfSpeechDetails(documents);
tdetails = tokenDetails(documents);
head(tdetails)
       Token       DocumentNumber    SentenceNumber    LineNumber     Type      Language     PartOfSpeech 
    ___________    ______________    ______________    __________    _______    ________    ______________

    "fairest"            1                 1               1         letters       en       adjective     
    "creatures"          1                 1               1         letters       en       noun          
    "desire"             1                 1               1         letters       en       noun          
    "increase"           1                 1               1         letters       en       noun          
    "thereby"            1                 1               1         letters       en       adverb        
    "beautys"            1                 1               1         letters       en       noun          
    "rose"               1                 1               1         letters       en       noun          
    "might"              1                 1               1         letters       en       auxiliary-verb

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

tokenizedDocument を使用してドイツの語テキストをトークン化します。

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

    8 tokens: Guten Morgen . Wie geht es dir ?
    6 tokens: Heute wird ein guter Tag .

ドイツ語テキストの品詞の詳細を取得するには、まず addPartOfSpeechDetails を使用します。

documents = addPartOfSpeechDetails(documents);

品詞の詳細を表示するには、tokenDetails 関数を使用します。

tdetails = tokenDetails(documents);
head(tdetails)
     Token      DocumentNumber    SentenceNumber    LineNumber       Type        Language    PartOfSpeech
    ________    ______________    ______________    __________    ___________    ________    ____________

    "Guten"           1                 1               1         letters           de       adjective   
    "Morgen"          1                 1               1         letters           de       noun        
    "."               1                 1               1         punctuation       de       punctuation 
    "Wie"             1                 2               1         letters           de       adverb      
    "geht"            1                 2               1         letters           de       verb        
    "es"              1                 2               1         letters           de       pronoun     
    "dir"             1                 2               1         letters           de       pronoun     
    "?"               1                 2               1         punctuation       de       punctuation 

入力引数

すべて折りたたむ

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

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: DiscardKnownValues=true は、以前に計算された詳細を破棄し、それらを再計算することを指定します。

文書を再トークン化する方法。次のいずれかの値として指定します。

  • 'part-of-speech' – 品詞タグを付けるためにトークンを変換します。この関数は以下のタスクを実行します。

    • 複合語を分割する。たとえば、"wanna" という複合語を "want" と "to" というトークンに分割します。これには、アポストロフィを含む複合語も含まれます。たとえば、この関数は "don't" という単語を "do" と "n't" というトークンに分割します。

    • 文を終わらせないピリオドを前のトークンとマージする。たとえば、"Mr" と "." というトークンをマージして "Mr." というトークンにします。

    • ドイツ語のテキストの場合、複数のトークンにまたがる略語をマージする。たとえば、"z"、"."、"B"、および "." というトークンをマージして、"z. B." という単一のトークンにします。

    • 連続するピリオドをマージして省略記号にする。たとえば、"." の 3 つのインスタンスをマージして、"..." という単一のトークンにします。

  • 'none' – 文書を再トークン化しません。

文検出のための略語のリスト。string 配列、文字ベクトル、文字ベクトルの cell 配列、または table として指定します。

入力文書に文の詳細が含まれていない場合、この関数はまず addSentenceDetails 関数を実行し、'Abbreviations' で指定された略語リストを指定します。文検出に関するその他のオプション (文頭語句など) を指定するには、addPartOfSpeechDetails の詳細を使用する前に addSentenceDetails 関数を使用します。

Abbreviations が string 配列、文字ベクトル、または文字ベクトルの cell 配列である場合、この関数はこれらを通常の略語として扱います。次の単語が大文字で始まる場合、この関数は末尾のピリオドで区切ります。この関数は、略語の大文字小文字の違いを無視します。文頭語句は、Starters という名前と値のペアを使用して指定します。

文を略語で分割する際の動作を個別に指定するには、Abbreviations を table として指定します。table には、Abbreviation と Usage という名前の変数が必要です。ここで、Abbreviation には略語を指定し、Usage には各略語のタイプを指定します。次の表では、Usage が取りうる値と、これらのタイプの略語が渡された際の関数の動作について説明しています。

Usage動作略語の例テキストの例検出される文
regular次の単語が大文字で始まる場合、末尾のピリオドで区切る。それ以外の場合、末尾のピリオドで区切らない。"appt.""Book an appt. We'll meet then."

"Book an appt."

"We'll meet then."

"Book an appt. today.""Book an appt. today."
inner末尾のピリオドの後で区切らない。"Dr.""Dr. Smith.""Dr. Smith."
reference次のトークンが数字でない場合、末尾のピリオドで区切る。次のトークンが数字だった場合、末尾のピリオドで区切らない。"fig.""See fig. 3.""See fig. 3."
"Try a fig. They are nice."

"Try a fig."

"They are nice."

unit前の単語が数字で、次の単語が大文字で始まる場合、末尾のピリオドで区切る。"in.""The height is 30 in. The width is 10 in."

"The height is 30 in."

"The width is 10 in."

前の単語が数字で、次の単語が大文字でない場合、末尾のピリオドで区切らない。"The item is 10 in. wide.""The item is 10 in. wide."
前の単語が数字でない場合、末尾のピリオドで区切る。"Come in. Sit down."

"Come in."

"Sit down."

既定値は、abbreviations 関数の出力です。日本語と韓国語のテキストでは、略語は通常、文の検出に影響を与えません。

ヒント

既定では、この関数は "V." のなどの 1 文字の略語、または "U.S.A." のような 1 文字とピリオドが混在するトークンを通常の略語として扱います。これらの略語を Abbreviations に含める必要はありません。

データ型: char | string | table | cell

以前に計算された詳細を破棄し、再計算するためのオプション。true または false として指定します。

データ型: logical

出力引数

すべて折りたたむ

更新された文書。tokenizedDocument 配列として返されます。updatedDocuments からトークンの詳細を取得するには、tokenDetails を使用します。

詳細

すべて折りたたむ

アルゴリズム

入力文書に文の詳細が含まれていない場合、この関数はまず addSentenceDetails を実行します。

バージョン履歴

R2018b で導入