Разбор текста с PHP / Python?Как?С чем? - PullRequest
1 голос
/ 31 марта 2011

У меня есть сайт Drupal Ed для изучающих иностранный язык, который я создаю, у которого есть функция обмена словарным запасом и функция карточки. Я подумываю добавить способ разбирать тексты (газетные статьи и т. П.) И выводить список использованных слов, а затем, возможно, перекрестно соединиться с разделом словаря.

На данный момент мне интересно, есть ли в php программы или скрипты в идеале или, возможно, python, которые можно использовать для разбора текста в список используемых слов (и, возможно, чтобы исключить список наиболее распространенных слов ). Я хотел бы иметь возможность адаптироваться к работе в Drupal, чтобы php был лучшим. Я открыт для использования любых других вещей там? Есть идеи?

Я не совсем уверен, с чего начать?

Ответы [ 4 ]

2 голосов
/ 31 марта 2011

Упрощенный запуск:

<?php
    // source text
    $paragraph = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Proin congue, quam nec tincidunt congue, massa ipsum sodales tellus,
        in rhoncus sem quam quis ante. Nam condimentum pellentesque libero at
        blandit. Suspendisse felis sem, interdum pulvinar ultricies a, auctor
        vel leo. Curabitur congue mi nec purus placerat sit amet mollis magna
        laoreet. Duis eu purus non turpis lacinia sagittis. Aliquam tristique
        nulla volutpat neque posuere faucibus. Aenean tempus diam quis sem
        convallis id cursus lorem sagittis. Nam feugiat, felis nec tincidunt
        aliquet, felis lectus bibendum mi, ut tincidunt purus urna ac felis.
        Quisque ut lectus dolor. Duis ipsum arcu, adipiscing id vestibulum
        fringilla, euismod non augue. Nullam quis ipsum nec tortor tristique
        egestas sed nec leo. Pellentesque tempus velit lacus, sit amet rhoncus
        mi. Curabitur justo ipsum, consectetur ac vestibulum sed, porttitor
        eget dui. Vivamus nisi lorem, porta vel gravida quis, varius et elit.
        Nulla eros metus, congue sit amet interdum at, porta eget ligula.";

    // remove newlines
    $paragraph = str_replace(array("\r","\n"), '', $paragraph);

    // convert to lowercase
    $paragraph = strtolower($paragraph);

    // remove non-alphanumeric characters
    $paragraph = preg_replace('/[^A-Za-z0-9\s]/', '', $paragraph);

    // convert into array
    $words = explode(' ', $paragraph);

    // remove null values
    $words = array_filter($words, 'strlen');

    // remove duplicate values
    $words = array_unique($words);

    // sort array alphabetically (optional)
    natsort($words);

    // reindex array
    $words = array_values($words);

    // display array
    print_r($words);
?>

Обновление: Теперь удаляет новые строки.Разделить все модификации на отдельные команды.

1 голос
/ 31 марта 2011

Чтобы исключить очень распространенные слова, вы можете использовать список стоп-слов , например:

Вы можете загрузить их и пересечь свой набор слов с соответствующим набором стоп-слов:

<?php

// read in stop words
$stopwords = file('ftp://ftp.cs.cornell.edu/pub/smart/english.stop', FILE_IGNORE_NEW_LINES);

// read in the words from your text
$words_from_text = array("notfrequent", "notfrequenttoo", "a", "is", "the", "superspecialword");

// remove the stop words
$final_words = array_diff($words_from_text, $stopwords);

// and have a look
var_dump($final_words);

?>
1 голос
/ 31 марта 2011

Вы можете использовать встроенные в PHP файловые функции для чтения файла.http://www.w3schools.com/PHP/php_file.asp

0 голосов
/ 31 марта 2011

Если текст вашей статьи представляет собой строку,

# Get the set of words used in the text:
words = set(word.lower() for word in text.split() if word.isalpha())
# Get word counts
frequencies = {word: text.count(word) for word in words}

Вы можете с легкостью отбросить наиболее распространенные слова из набора.Возможно, стоит strip убрать пунктуацию вместо того, чтобы просто использовать isalpha().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...