Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

TextRank를 사용하여 텍스트 데이터에서 키워드 추출하기

이 예제는 TextRank를 사용하여 텍스트 데이터에서 키워드를 추출하는 방법을 보여줍니다.

TextRank 키워드 추출 알고리즘은 품사 태그에 기반한 방식으로 키워드를 추출하여 후보 키워드를 식별하고, 슬라이딩 윈도우로 단어의 동시발생을 파악하여 점수를 매깁니다. 키워드에는 토큰이 여러 개 있을 수 있습니다. 뿐만 아니라 TextRank 키워드 추출 알고리즘은 문서에서 키워드들이 연속하여 나오면 이들 키워드를 병합합니다.

키워드 추출하기

텍스트 데이터를 포함하는 토큰화된 문서로 구성된 배열을 만듭니다.

textData = [
    "MATLAB provides really useful tools for engineers. Scientists use many useful MATLAB toolboxes."
    "MATLAB and Simulink have many features. MATLAB and Simulink makes it easy to develop models."
    "You can easily import data in MATLAB. In particular, you can easily import text data."];
documents = tokenizedDocument(textData);

textrankKeywords 함수를 사용하여 키워드를 추출합니다.

tbl = textrankKeywords(documents)
tbl=6×3 table
                   Keyword                   DocumentNumber    Score 
    _____________________________________    ______________    ______

    "useful"    "MATLAB"      "toolboxes"          1           4.8695
    "useful"    ""            ""                   1           2.3612
    "MATLAB"    ""            ""                   1           1.6212
    "many"      "features"    ""                   2           4.6152
    "text"      "data"        ""                   3           3.4781
    "data"      ""            ""                   3           1.7391

한 키워드에 단어가 여러 개 있는 경우 string형 배열의 i번째 요소는 키워드의 i번째 단어에 대응합니다. 이 키워드의 단어 수가 가장 긴 키워드보다 적으면 string형 배열의 나머지 요소는 빈 문자열 ""입니다.

가독성을 위해 join 함수와 strip 함수를 사용하여 여러 단어로 된 키워드를 단일 문자열로 변환합니다.

if size(tbl.Keyword,2) > 1
    tbl.Keyword = strip(join(tbl.Keyword));
end
head(tbl)
ans=6×3 table
             Keyword             DocumentNumber    Score 
    _________________________    ______________    ______

    "useful MATLAB toolboxes"          1           4.8695
    "useful"                           1           2.3612
    "MATLAB"                           1           1.6212
    "many features"                    2           4.6152
    "text data"                        3           3.4781
    "data"                             3           1.7391

문서당 최대 키워드 수 지정하기

textrankKeywords 함수는 기본적으로 식별된 모든 키워드를 반환합니다. 키워드 수를 줄이려면 'MaxNumKeywords' 옵션을 사용하십시오.

'MaxNumKeywords' 옵션을 2로 설정하여 각 문서마다 상위 2개의 키워드를 추출합니다.

tbl = textrankKeywords(documents,'MaxNumKeywords',2)
tbl=5×3 table
                   Keyword                   DocumentNumber    Score 
    _____________________________________    ______________    ______

    "useful"    "MATLAB"      "toolboxes"          1           4.8695
    "useful"    ""            ""                   1           2.3612
    "many"      "features"    ""                   2           4.6152
    "text"      "data"        ""                   3           3.4781
    "data"      ""            ""                   3           1.7391

품사 태그 지정하기

위의 추출된 키워드에서 함수는 "import"라는 단어를 키워드로 간주하지 않습니다. TextRank 키워드 추출 알고리즘은 기본적으로 품사 태그 "noun", "proper-noun", "adjective"가 있는 토큰을 후보 키워드로 사용하기 때문입니다. "import"라는 단어는 동사이므로 알고리즘은 이 단어를 후보 키워드로 간주하지 않습니다. 마찬가지로 알고리즘은 부사 "easily"도 후보 키워드로 간주하지 않습니다.

후보 키워드를 식별하는 데 사용할 품사 태그를 지정하려면 'PartOfSpeech' 옵션을 사용합니다.

이전과 동일한 텍스트에서 키워드를 추출하고 품사 태그 "adverb""verb"도 지정합니다.

newTags = ["adverb" "verb"];
tags = ["noun" "proper-noun" "adjective" newTags];
tbl = textrankKeywords(documents,'PartOfSpeech', tags)
tbl=7×3 table
                      Keyword                       DocumentNumber    Score 
    ____________________________________________    ______________    ______

    "use"         "many"    "useful"    "MATLAB"          1           5.8839
    "useful"      ""        ""          ""                1           2.0169
    "MATLAB"      ""        ""          ""                1           1.5478
    "Simulink"    "have"    "many"      ""                2           4.5058
    "Simulink"    ""        ""          ""                2           1.5161
    "import"      "text"    "data"      ""                3           4.7921
    "import"      "data"    ""          ""                3           3.4195

여기에서 함수는 토큰 "import"를 후보 키워드로 처리하고 이를 여러 단어로 된 키워드 "import data"와 "import text data"로 병합합니다.

윈도우 크기 지정하기

위의 추출된 키워드에서 함수는 부사 "easily"를 키워드로 추출하지 않습니다. 이는 텍스트 내에서 이 단어와 다른 후보 키워드와의 근접도 때문입니다.

TextRank 키워드 추출 알고리즘은 슬라이딩 윈도우 내에서의 쌍별 동시발생 수를 사용하여 후보 키워드의 점수를 매깁니다. 윈도우 크기를 늘리려면 'Window' 옵션을 사용합니다. 윈도우 크기를 늘리면 함수가 키워드 간의 동시발생을 더 많이 찾을 수 있으며 키워드 중요도 점수가 올라갑니다. 이렇게 하면 더 많은 연관 키워드를 찾을 수 있지만 대신 연관성이 낮은 키워드에 높은 점수가 부여될 가능성을 감수해야 합니다.

이전과 동일한 텍스트에서 키워드를 추출하고 윈도우 크기도 3으로 지정합니다.

tbl = textrankKeywords(documents, ...
    'PartOfSpeech', tags, ...
    'Window',3)
tbl=8×3 table
                      Keyword                       DocumentNumber    Score 
    ____________________________________________    ______________    ______

    "many"        "useful"    "MATLAB"    ""              1           4.2185
    "really"      "useful"    ""          ""              1           2.8851
    "MATLAB"      ""          ""          ""              1           1.3154
    "Simulink"    ""          ""          ""              2           1.4526
    "develop"     ""          ""          ""              2           1.0912
    "features"    ""          ""          ""              2           1.0794
    "easily"      "import"    "text"      "data"          3           5.2989
    "easily"      "import"    "data"      ""              3           4.0842

여기에서 함수는 토큰 "easily"를 키워드로 처리하고 이를 여러 단어로 된 키워드 "easily import text data"와 "easily import data"로 병합합니다.

TextRank 키워드 추출 알고리즘에 대한 자세한 내용은 TextRank Keyword Extraction 항목을 참조하십시오.

대안

다양한 키워드 추출 알고리즘을 실험하여 데이터에 가장 적합한 알고리즘을 확인할 수 있습니다. TextRank 키워드 알고리즘은 품사 태그에 기반한 방식을 사용하여 후보 키워드를 추출하기 때문에 추출된 키워드가 짧을 수 있습니다. 또는 구분 기호 사이에 나타나는 토큰의 시퀀스를 후보 키워드로 추출하는 RAKE 알고리즘을 사용하여 키워드 추출을 시도할 수도 있습니다. RAKE를 사용하여 키워드를 추출하려면 rakeKeywords 함수를 사용합니다. 자세한 내용은 Extract Keywords from Text Data Using RAKE 항목을 참조하십시오.

참고 문헌

[1] Mihalcea, Rada, and Paul Tarau. "Textrank: Bringing order into text." In Proceedings of the 2004 conference on empirical methods in natural language processing, pp. 404-411. 2004.

참고 항목

| | |

관련 항목