23
Программные системы для латентно-семантического анализа Семенов Алексей, 524 гр. 2010г.

Программные системы для латентно-семантического анализа

  • Upload
    -

  • View
    2.416

  • Download
    1

Embed Size (px)

DESCRIPTION

3 декабря 2010Семенов Алексей

Citation preview

Page 1: Программные системы для латентно-семантического анализа

Программные системы для латентно-семантического анализа

Семенов Алексей, 524 гр.

2010г.

Page 2: Программные системы для латентно-семантического анализа

Латентно-семантический анализ

Построение векторной модели для анализа связей и зависимостей между набором «документов» и содержащимися в них «термами».

Матрица «терм-документ»:

Cxt1 Cxt2 Cxt3 Cxt4 Cxt5

Trm1 1 1 1 1 1

Trm2 0 1 0 1 1

Trm3 0 0 0 0 0

Trm4 1 0 1 0 1

Page 3: Программные системы для латентно-семантического анализа

Латентно-семантический анализ

Матрица

– большая

– разреженная

– содержит «шумы»

Решение - приближение матрицей меньшего ранга.

Сингулярное разложение:

Page 4: Программные системы для латентно-семантического анализа

Пример

Коллекция «текстов»:

c1: Human machine interface for ABC computer applications

c2: A survey of user opinion of computer system response time

c3: The EPS user interface management system

c4: System and human system engineering testing of EPS

c5: Relation of user perceived response time to error measurement

m1: The generation of random, binary, ordered trees

m2: The intersection graph of paths in trees

m3: Graph minors IV: Widths of trees and well-quasi-ordering

m4: Graph minors: A survey

Page 5: Программные системы для латентно-семантического анализа

Пример

Матрица до сингулярного разложения:

c1 c2 c3 c4 c5 m1 m2 m3 m4

human 1 0 0 1 0 0 0 0 0

interface 1 0 1 0 0 0 0 0 0

computer 1 1 0 0 0 0 0 0 0

user 0 1 1 0 1 0 0 0 0

system 0 1 1 2 0 0 0 0 0

response 0 1 0 0 1 0 0 0 0

time 0 1 0 0 1 0 0 0 0

EPS 0 0 1 1 0 0 0 0 0

survey 0 1 0 0 0 0 0 0 1

trees 0 0 0 0 0 1 1 1 0

graph 0 0 0 0 0 0 1 1 1

minors 0 0 0 0 0 0 0 1 1

Page 6: Программные системы для латентно-семантического анализа

Пример

После сингулярного разложения:

c1 c2 c3 c4 c5 m1 m2 m3 m4

human 0.16 0.40 0.38 0.47 0.18 -0.05 -0.12 -0.16 -0.09

interface 0.14 0.37 0.33 0.40 0.16 -0.03 -0.07 -0.10 -0.04

computer 0.15 0.51 0.36 0.41 0.24 0.02 0.06 0.09 0.12

user 0.26 0.84 0.61 0.70 0.39 0.03 0.08 0.12 0.19

system 0.45 1.23 1.05 1.27 0.56 -0.07 -0.15 -0.21 -0.05

response 0.16 0.58 0.38 0.42 0.28 0.06 0.13 0.19 0.22

time 0.16 0.58 0.38 0.42 0.28 0.06 0.13 0.19 0.22

EPS 0.22 0.55 0.51 0.63 0.24 -0.07 -0.14 -0.20 -0.11

survey 0.10 0.53 0.23 0.21 0.27 0.14 0.31 0.44 0.42

trees -0.06 0.23 -0.14 -0.27 0.14 0.24 0.55 0.77 0.66

graph -0.06 0.34 -0.15 -0.30 0.20 0.31 0.69 0.98 0.85

minors -0.04 0.25 -0.10 -0.21 0.15 0.22 0.50 0.71 0.62

Page 7: Программные системы для латентно-семантического анализа

ПримерКластеризация по исходной матрице:

Кластеризация по полученной матрице:

c1 c2 c3 c4 c5 m1 m2 m3

c2 -0.19

c3 0.00 0.00

c4 0.00 0.00 0.47

c5 -0.33 0.58 0.00 -0.31

m1 -0.17 -0.30 -0.21 -0.16 -0.17

m2 -0.26 -0.45 -0.32 -0.24 -0.26 0.67

m3 -0.33 -0.58 -0.41 -0.31 -0.33 0.52 0.77

m4 -0.33 -0.19 -0.41 -0.31 -0.33 -0.17 0.26 0.56

c1 c2 c3 c4 c5 m1 m2 m3

c2 0.91

c3 1.00 0.91

c4 1.00 0.88 1.00

c5 0.85 0.99 0.85 0.81

m1 -0.85 -0.56 -0.85 -0.88 -0.45

m2 -0.85 -0.56 -0.85 -0.88 -0.44 1.00

m3 -0.85 -0.56 -0.85 -0.88 -0.44 1.00 1.00

m4 -0.81 -0.50 -0.81 -0.84 -0.37 1.00 1.00 1.00

Page 8: Программные системы для латентно-семантического анализа

Применение

• Сравнение данных(кластерный анализ, классификация документов)

• Информационный поиск с использованием векторной модели.

• Поиск схожих документов на разных языках(межъязыковой информационный поиск).

• Нахождение отношений между термами(выявление синонимии, многозначности).

• Определение наиболее подходящего под контекст терма(вопросно-ответные системы).

Page 9: Программные системы для латентно-семантического анализа

Open-source проекты

• SenseClusters: http://www.d.umn.edu/~tpederse/senseclusters.html

• S-Space: http://code.google.com/p/airhead-research/

• Semantic Vectors (ex-Infomap)http://code.google.com/p/semanticvectors/

Page 10: Программные системы для латентно-семантического анализа

SenseClusters

Основная функция – кластеризация схожих контекстов.

Применение:

• Разрешение неоднозначности слов (в частности, имен)

• Классификация документов разного рода (электронных писем, новостных статей)

• Классификация лексики (нахождение синонимов, антонимов и других классов отношений)

Сайт проекта:http://www.d.umn.edu/~tpederse/senseclusters.html

Page 11: Программные системы для латентно-семантического анализа

SenseClusters

Два типа контекстов :• с целевым словом (headed context)

• без целевого слова (headless context).

Биграммы – «термы», характеризующие контекст (документ).

Ngram Statistics Package (NSP) – пакет для выявления биграмм.

Формат входных и выходных данных - SENSEVAL-2

Page 12: Программные системы для латентно-семантического анализа

SenseClusters

Программный пакет, написанный на Perl.Лицензия – GPL.

Структура:

• /preprocess - предварительная обработка входных данных:

– text2sval.pl - конвертация в формат Senseval-2.

– maketarget.pl - разметка целевого слова.

– prepare_sval2.pl - завершающая проверка на корректность.

• /nsp - поиск биграмм в документах.

• /vector – построение векторного представления контекстов.

• /svd - сингулярное разложение. Используется библиотека SVDPACKC.

• /evaluate – кластеризация. Используется пакет CLUTO.

Page 13: Программные системы для латентно-семантического анализа

SenseClusters

Входной файл в формате SENSEVAL-2:

Page 14: Программные системы для латентно-семантического анализа

SenseClusters

Выходной файл с кластеризованными документами:

Page 15: Программные системы для латентно-семантического анализа

SenseClustersВеб-интерфейс: http://marimba.d.umn.edu/cgi-bin/SC-cgi/index.cgi

Page 16: Программные системы для латентно-семантического анализа

S-Space

Основная функция - универсальное средство для построения и обработки векторной модели.

• Содержит реализации большого количества алгоритмов.(разные векторные модели, некоторые методы их последующей обработки)

• Ориентированность на скорость работы.

• Интуитивно понятное представление данных.

Сайт проекта:

http://code.google.com/p/airhead-research/

Page 17: Программные системы для латентно-семантического анализа

S-Space

Формат входных данных:– Текстовый корпус – один файл. – Каждый документ – отдельная строка. – Предварительная разметка с помощью встроенных средств.

Минимизация затрат на чтение информации.

Формат выходных данных (.sspace):Два способа представления – бинарный и текстовый.Особое представление для сильно разреженной матрицы.

Page 18: Программные системы для латентно-семантического анализа

S-Space

Программный пакет на Java.

Лицензия – GPL.Сборка с помощью Apache Ant.

Структура:• /mains - исполняемые классы, реализующие разные векторные модели:

– Beagle

– COALS

– Latent-Semantic Analysis

– Incremental Semantic Analysis

– Explicit Semantic Analysis

• /evaluation – алгоритмы кластеризации, определения меры схожести и др.

• /matrix - работа с матрицами.

• /text – препроцессоры и конвертеры текстовой информации.

java mains.lsa -d corpus.txt -F exclude=stopwords.txt -n 500 out.sspace

Page 19: Программные системы для латентно-семантического анализа

Semantic Vectors

Основная функция – построение модели семантических векторов для определения схожести понятий и поиска по информационной базе.

«Вторая жизнь» проекта Infomap NLP.Большой акцент на кроссплатформенности.

Cайт проекта:

http://code.google.com/p/semanticvectors/

Page 20: Программные системы для латентно-семантического анализа

Semantic Vectors

Два этапа на архитектурном уровне:

• построение векторной модели

• поиск по запросам

Использование библиотек Apache Lucene для построения матрицы.

Два способа хранения полученной информации (векторной модели):

• простой текст с разделительными символами

• оптимизированный формат Lucene (бинарный)

Создаются отдельные файлы с векторами для термов и документов.

Page 21: Программные системы для латентно-семантического анализа

Semantic Vectors

Программный пакет на Java Лицензия - new BSD.

Структура:• /lucene – базовые утилиты Apache Lucene.

• /semanticvectors – построение и обработка векторной модели

– BuildIndex – генерация и запись векторов для термов и документов.

– CompareTerms – исполняемый класс для сравнения термов.

– Search – поиск похожих термов или документов.

– VectorUtils – функции над векторами.

– LSA – сингулярное разложение (реализация SVDPACKC).

java semanticvectors.Search -queryvectorfile termvectors.bin -searchvectorfile docvectors.bin Abraham

Page 22: Программные системы для латентно-семантического анализа

Заключение

• Каждый из рассмотренных пакетов имеет свои достоинства и свою область применения.

• SenseClusters и Semantic Vectors разработаны для конкретных задач.

• Для научной работы наиболее удобным, гибким и разносторонним можно назвать пакет S-Space.

Page 23: Программные системы для латентно-семантического анализа

Литература и ресурсы

• Dominic Widdows, Kathleen Ferraro. 2008. Semantic Vectors : A Scalable Open-Source Package and Online Technology Management Application. LREC 2008.

• Ted Pedersen. 2006. Language Independent Methods of Clustering Similar Contexts (with applications). University of Minnesota, Duluth.

• О.А.Митрофанова, А.С.Мухин, П.В.Паничева. 2007. Автоматическая классификация лексики в русскоязычных текстах на основе латентного семантического анализа. СПбГУ, кафедра математической лингвистики.

• http://code.google.com/p/airhead-research/wiki/LatentSemanticAnalysis

• http://en.wikipedia.org/wiki/Latent_semantic_analysis

• http://en.wikipedia.org/wiki/Probabilistic_latent_semantic_analysis