Git Product home page Git Product logo

diverse_keyword_extraction's Introduction

Diverse Keyword Extraction

Spring 2014. Speech Technology Center

Algorithm from "Diverse Keyword Extraction from Conversations"


Алгоритм Diverse Keyword Extraction позволяет получить набор слов, которые представляют смысловое содержание текстов. Поощряется как сходство слов, для извлечения наиболее репрезентативных слов, так и разнообразие слов, чтобы покрыть несколько тем, если это необходимо. Diverse Keyword Extraction использует Topic Model (LDA).

На вход DiverseKeyword подается экземпляр класса TopicModel и количество ключевых слов. TopicModel работает с текстами собранными в одном файле. Формат этого файла:

Имя_файла1(без_пробелов) X текст файла в одной строке ...
Имя_файла2(без_пробелов) X текст файла в одной строке ...
Имя_файла3(без_пробелов) X текст файла в одной строке ...
...

Для преобразования базы в один файл можно использовать функцию convert. Она принимает путь до каталога, в котором хранится база. Ожидается, что база состоит из папок – предполагаемых тем, в которых находятся файлы относящиеся к соответствующим темам. Файлы могут содержать текст как в одной строке, так и в нескольких. При конвертации можно удалять начальные теги, например, в реализации convert, удаляется в начале каждого текста Sentence=, если оно, конечно, присутствуют. Можно добавить свои игнорируемые начальные теги. Для этого надо добавить их в множество ignoredTags в convert.cpp. Имя каждого файла в получаемом файле-базе формируется из имени папки и имени файла, например, TOPIC:имя_папки_FILENAME:имя_файла. Сейчас convert ожидает файлы в кодировке cp1251, для работы с форматом utf-8 нужно самостоятельно закомментировать/раскомментировать соответствующие строки в convert.cpp. На выходе файл-база в utf-8. Сам файл-база сохраняется под именем Имя_базы_convert_out.txt в data/results. Возвращает convert количество обнаруженных не пустых папок в базе.

#####TopicModel возвращает:

  • top-words – наиболее характерные слова для каждой темы, формат файла:
1   Dirichlet_alpha_parameter
word    frequency
word    frequency
...

2   Dirichlet_alpha_parameter
word    frequency
word    frequency
...
  • doc-topics – распределение тем по каждому документу, формат файла:
#doc    name    topic   proportion ...
1   filename1   topic   max_proportion    othertopic    less_proportion ...
2   filename2   topic   max_proportion    othertopic    less_proportion ...
...

#####DiverseKeyword возвращает:

  • doc-keywords – ключевые слова для каждого документа, формат файла:
#doc    name    keywords ...
1   filename1   word   word   ...
2   filename2   word   word   ...
...

handle.cpp содержит обработчик, который создает TopicModel и DiverseKeyword для заданной базы, а также выводит результат в стандартный выходной поток (по умолчанию) или в указанные файлы в виде: Имя_базы_top-words_log_info.txt, Имя_базы_doc-topics_log_info.txt, Имя_базы_doc-keywords_log_info.txt, где _log_info это информация о количестве тем, которые выделил TopicModel из текстов, о том было ли приведение слов к нижнему регистру, и исключались ли стоп-слова из текста при обработке. Сейчас все эти файлы сохраняются в data/results.

TopicModel во время обработки текста удаляет пунктуацию, кроме дефисов, также, если активны флаги to_lowercase и del_stop_words, то все слова приводятся к нижнему регистру, и удаляются стоп-слова соответственно. Списки стоп-слов лежат в папке data. Сейчас используется список стоп-слов взятый из voyant для русского языка ru_stopwords_from_voyant.txt, который вручную расширен. Указать другой файл для стоп-слов можно в методе getStopWords из utils.cpp.

В main.cpp находятся примеры работы с алгоритмом. Предполагается, что в корне проекта расположены папка data c базами и списком стоп-слов, и папка data/results для результатов.

Дополнительные параметры для компилятора gcc: -lboost_filesystem -lboost_system -g -ITopicModelingSources -std=c++11.

diverse_keyword_extraction's People

Contributors

ne88ie avatar

Watchers

 avatar

diverse_keyword_extraction's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.