Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.


استخراج کلمات کلیدی


سیدعلی حسینی

دانلود اسلایدها: SeyyedAliHosseini.com

کاربردهای کلمات کلیدی


استخراج کلمات کلیدی چیست؟

استخراج کلمات کلیدی یا شناسایی اصطلاحات به کار رفته، بهترین توصیف در مورد موضوع یک سند است.


روش‌های تخصیص کلمات کلیدی

تخصیص کلمات کلیدی (keyword assignment)
انتخاب کلمات کلیدی از واژگان طبقه‌بندی شده.

استخراج کلمات کلیدی (keyword extraction)
انتخاب کلماتی که به‌طور صریح در متن ذکر شده‌است.

الگوریتم‌های استخراج

کلمات کلیدی



انتخاب الگوریتم مناسب جهت استخراج کلمات کلیدی به موارد مختلفی بستگی دارد از جمله:

۱) کیفیت متن (مناسب بودن متن برای پردازش زبان‌های طبیعی)

۲) میانگین طول متن اسناد


نکته: تشخیص کلمات کلیدی برای متن‌های کوتاه بسیار دشوار است.

الگوریتم‌های استخراج

کلمات کلیدی



TF-IDF (term frequency–inverse document frequency)

RAKE (Rapid Automatic Keyword Extraction)

TextRank

TF-IDF


در این شیوه به لغات، یک وزن بر اساس فراوانی آن در سند داده می‌شود.
در واقع این سیستم وزن دهی نشان می‌دهد چقدر یک کلمه برای یک سند مهم است.

TF (document, word) =
#occurences of word in document / #words in document

IDF (word) =
log (#documents / #documents containing word)


TF_IDF = TF (document, word) * IDF (word)

مراحل استخراج کلمات کلیدی

1) Remove Stop Words and non-english characters and numbers
a, about, above, after, again, against, all, am, an, and, any, are, as, at, be, because, been, before, being, below, between, both, but, by, could, did, do, does, doing, down, during, each, few, for, from, further, had, has, have, having, he, her, here, hers, herself, him, himself, his, how, I, if, in, into, is, it, its, itself, me, more, most, my, myself, nor, of, on, once, only, or, other, ought, our, ours, ourselves, out, over, own, same, she, should, so, some, such, than, that, the, their, theirs, them, themselves, then, there, these, they, this, those, through, to, too, under, until, up, very, was, we, were, what, when, where, which, while, who, whom, why, with, would, you, your, yours, yourself, yourselves

مراحل استخراج کلمات کلیدی

2) Tokenization
For example, in the text string: The quick brown fox jumps over the lazy dog <sentence> <word>The</word> <word>quick</word> <word>brown</word> <word>fox</word> <word>jumps</word> <word>over</word> <word>the</word> <word>lazy</word> <word>dog</word> </sentence>

مراحل استخراج کلمات کلیدی

3) Stemming

Suffix-stripping algorithms

if the word ends in 'ed', remove the 'ed'
if the word ends in 'ing', remove the 'ing'
if the word ends in 'ly', remove the 'ly'
if the word ends in 'ies', remove the 'ies' and append 'y'


running, runned, and runly => run
stemming, stemmed => stem
frequencies => frequency

مراحل استخراج کلمات کلیدی

4) TF

Find the TF (term frequency) for each unique stemmed token present.



TF (document, word) =
#occurences of word in document / #words in document

مراحل استخراج کلمات کلیدی

5) TF-IDF

Rank the stemmed tokens (keywords) using TF*IDF

IDF (word) =
1 + log (#documents / #documents containing word)


نکته: چون در اینجا هدف ما یافتن کلمات کلیدی «۱» سند است. از این مرحله صرف‌نظر می‌کنیم.
IDF = 1 + log (1 / 1);

TF_IDF = TF (document, word)

استخراج کلمات کلیدی دوبخشی


یکی از رویکردهایی که می‌توان به کمک آن کلمات کلیدی دوبخشی را استخراج کرد این‌است که:
کلمات کلیدی پرتکراری که در مجاورت یکدیگرند را، یک کلمه در نظر بگیریم.


استخراج کلمات کلیدی از متن



کلمات کلیدی متن


لطفا اسلاید قبلی را تکمیل کنید


کد پروژه

<?php
function endsWith($haystack, $needle) {
    return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== false);
}

if (strlen($_POST['document_text']) > 1) {

    // get text from user input
    $string = $_POST['document_text'];

    // define stop words
    $stop_words = [
        "a",
        "about",
        "above",
        "after",
        "again",
        "against",
        "all",
        "am",
        "an",
        "and",
        "any",
        "are",
        "as",
        "at",
        "be",
        "because",
        "been",
        "before",
        "being",
        "below",
        "between",
        "both",
        "but",
        "by",
        "could",
        "did",
        "do",
        "does",
        "doing",
        "down",
        "during",
        "each",
        "few",
        "for",
        "from",
        "further",
        "had",
        "has",
        "have",
        "having",
        "he",
        "her",
        "here",
        "hers",
        "herself",
        "him",
        "himself",
        "his",
        "how",
        "I",
        "if",
        "in",
        "into",
        "is",
        "it",
        "its",
        "itself",
        "me",
        "more",
        "most",
        "my",
        "myself",
        "nor",
        "of",
        "on",
        "once",
        "only",
        "or",
        "other",
        "ought",
        "our",
        "ours",
        "ourselves",
        "out",
        "over",
        "own",
        "same",
        "she",
        "should",
        "so",
        "some",
        "such",
        "than",
        "that",
        "the",
        "their",
        "theirs",
        "them",
        "themselves",
        "then",
        "there",
        "these",
        "they",
        "this",
        "those",
        "through",
        "to",
        "too",
        "under",
        "until",
        "up",
        "very",
        "was",
        "we",
        "were",
        "what",
        "when",
        "where",
        "which",
        "while",
        "who",
        "whom",
        "why",
        "with",
        "would",
        "you",
        "your",
        "yours",
        "yourself",
        "yourselves",
    ];

    // remove stop words
    $string = preg_replace('/\b('.implode('|',$stop_words).')\b/i','', $string);

    // remove non-english chars and digits
    $string = preg_replace('/[^A-Za-z ]+/u', '', $string);

    // tokenization
    $tokens = preg_split( '/( |\t|\n)/', $string);

    // stemming
    $index = 0;
    foreach ($tokens as $token)
    {
        if(endsWith($token, 'ed')){
            $tokens[$index] = substr($token, 0, -2);
        }
        if(endsWith($token, 'ing')){
            $tokens[$index] = substr($token, 0, -3);
        }
        if(endsWith($token, 'ly')){
            $tokens[$index] = substr($token, 0, -3);
        }

        if(endsWith($token, 'ies')){
            $tokens[$index] = substr($token, 0, -3) . 'y';
        }

        $index++;
    }

    // calculate term frequency
    $tokens_string = implode($tokens, ' ');

    $tf = array_count_values(str_word_count(strtolower($tokens_string), 1));
    arsort($tf); // sort by tf

    $keywords = array_slice($tf, 0, 10);

    echo "<div class='ltr'>";
    foreach ($keywords as $word => $value) {
        echo $word . '<br>';
    }
    echo "</div>";

}
?>

منابع