Main Content

addPartOfSpeechDetails

문서에 품사 태그 추가

설명

addPartOfSpeechDetails를 사용하여 문서에 품사 태그를 추가합니다.

이 함수는 한국어, 영어, 일본어, 독일어 텍스트를 지원합니다.

updatedDocuments = addPartOfSpeechDetails(documents)documents에서 품사를 검출하고 토큰 세부 정보를 업데이트합니다. 이 함수는 기본적으로 품사 태그를 지정하기 위해 텍스트를 다시 토큰화합니다. 예를 들어 이 함수는 단어 "you're"를 토큰 "you"와 "re"로 분할합니다. updatedDocuments에서 품사 세부 정보를 가져오려면 tokenDetails를 사용합니다.

예제

updatedDocuments = addPartOfSpeechDetails(documents,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다.

addPartOfSpeechDetails 함수는 lower, upper, erasePunctuation, normalizeWords, removeWords, removeStopWords 함수에 의해 제거되는 정보를 사용하기 때문에 이러한 함수를 사용하기 전에 addPartOfSpeechDetails 함수를 먼저 사용해야 합니다.

예제

모두 축소

예제 데이터를 불러옵니다. 파일 sonnetsPreprocessed.txt에는 셰익스피어 소네트의 전처리된 버전이 들어 있습니다. 파일에는 한 줄에 하나씩 소네트가 들어 있으며 단어가 공백으로 구분되어 있습니다. 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에서 반환된 테이블에 품사 태그를 추가합니다. 처음 몇 개 토큰에 대해 업데이트된 토큰 세부 정보를 표시합니다.

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 = 
  2x1 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는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 각 이름과 값을 쉼표로 구분하고 Name을 따옴표로 묶으십시오.

예: 'DiscardKnownValues',true는 이전에 계산된 세부 정보를 무시하고 다시 계산하도록 지정합니다.

문서를 다시 토큰화하는 방법으로, 다음 중 하나로 지정됩니다.

  • 'part-of-speech' – 품사 태그를 지정하기 위해 토큰을 변환합니다. 함수는 다음 작업을 수행합니다.

    • 합성어를 분할합니다. 예를 들어, 합성어 "wanna"를 토큰 "want""to"로 나눕니다. 여기에는 아포스트로피가 있는 합성어가 포함됩니다. 예를 들어, 이 함수는 단어 "don't"를 토큰 "do""n't"로 분할합니다.

    • 문장을 끝내지 않는 마침표를 선행 토큰과 병합합니다. 예를 들어, "Mr""."를 토큰 "Mr."로 병합합니다.

    • 독일어 텍스트의 경우 여러 토큰에 걸쳐 있는 약어를 병합합니다. 예를 들어 토큰 "z", ".", "B", "."를 단일 토큰 "z. B."로 병합합니다.

    • 여러 개의 마침표를 줄임표로 병합합니다. 예를 들어, "." 3개를 단일 토큰 "..."로 병합합니다.

  • 'none' – 문서를 다시 토큰화하지 않습니다.

문장 검출을 위한 약어 목록으로, string형 배열, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 테이블로 지정됩니다.

입력 문서에 문장 세부 정보가 포함되어 있지 않은 경우 이 함수는 먼저 addSentenceDetails 함수를 실행하고 'Abbreviations'에서 제공하는 약어 목록을 지정합니다. 문장 검출에 대한 추가 옵션(예: 문장 시작 부분)을 지정하려면 addPartOfSpeechDetails 세부 정보를 사용하기 전에 addSentenceDetails 함수를 사용하십시오.

Abbreviations가 string형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열이면 함수는 이를 일반적인 약어로 처리합니다. 이어지는 단어가 대문자로 된 문장 시작 부분인 경우 함수는 후행 마침표에서 문장을 나눕니다. 이 함수는 약어의 대/소문자 구분을 무시합니다. Starters 이름-값 쌍을 사용하여 문장 시작 부분을 지정하십시오.

약어에서 문장을 나눌 때 다른 동작을 지정하려면 Abbreviations를 테이블로 지정합니다. 테이블에는 AbbreviationUsage라는 변수가 있어야 합니다. 여기서 Abbreviation에는 약어가 포함되고 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."와 같은 단일 문자 약어나 "U.S.A."와 같이 단일 문자와 마침표가 혼합된 토큰을 일반적인 약어로 처리합니다. Abbreviations에 이러한 약어를 포함할 필요가 없습니다.

데이터형: char | string | table | cell

이전에 계산된 세부 정보를 무시하고 다시 계산하는 옵션으로, true 또는 false로 지정됩니다.

데이터형: logical

출력 인수

모두 축소

업데이트된 문서로, tokenizedDocument 배열로 반환됩니다. updatedDocuments에서 토큰 세부 정보를 가져오려면 tokenDetails를 사용하십시오.

세부 정보

모두 축소

품사 태그

addPartOfSpeechDetails 함수는 tokenDetails 함수에서 반환된 테이블에 품사 태그를 추가합니다. 이 함수는 다음 클래스 이름 중 하나를 사용하여 각 토큰에 categorical형 태그를 지정합니다.

  • adjective — 형용사

  • adposition — 부치사

  • adverb — 부사

  • auxiliary-verb — 조동사

  • coord-conjunction — 등위접속사

  • determiner — 한정사

  • interjection — 감탄사

  • noun — 명사

  • numeral — 수사

  • particle — 불변화사

  • pronoun — 대명사

  • proper-noun — 고유 명사

  • punctuation — 문장 부호

  • subord-conjunction — 종속접속사

  • symbol — 기호

  • verb — 동사

  • other — 기타

알고리즘

입력 문서에 문장 세부 정보가 포함되어 있지 않은 경우 이 함수는 먼저 addSentenceDetails를 실행합니다.

버전 내역

R2018b에 개발됨