Определение университетского рейтинга

Постановка задачи и обзор университетских рейтингов. Оценка качества обучения. Программа для нахождения векторов файлов по ключевым словам. Основные элементы в формуле ранжирования. Наивный байесовский классификатор и метод k-ближайших соседей.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 12.06.2016
Размер файла 249,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

3.4 Метод k-ближайших соседей

В распознавание образов, метод k-ближайших соседей представляет собой непараметрический метод, который используется для классификации и регрессии. Выход зависит от того, для чего именно используется метод k-ближайших соседей:

· Если для классификации, то выходными данными являтся информация о принадлежности к одному из классов. Объект классифицируется в зависимости от своих соседей: объекту присваивается класс, наиболее распространенный среди его k ближайших соседей (k - это положительное целое число, как правило, небольшое). Если k = 1, то объект просто относим к классу, к которому относится ближайший сосед.

· Если для регрессии, то на выходе результатом этого метода будет значение объекта. Это значение вычисляется как среднее из значений его k ближайших соседей.

Метод k-ближайших соседей является одним из самых простых из всех алгоритмов машинного обучения.

Как для классификации, так и для регрессии, может быть полезно ввести понятие веса соседей. Другими словами, те соседи, которые ближе к объекту, вносят в среднем больший вклад, чем более отдаленные. Например, общая весовая схема заключается в предоставлении каждому соседу вес 1/d, где d - расстояние до соседа.[10]

Алгоритм

Обучающая выборка - вектора в многомерном пространстве признаков, каждый с меткой класса. Этап обучения алгоритма состоит только из хранения пространственных векторов и вектора меток обучающей выборки.

На этапе классификации, вектор без метки классифицируются путем присвоения метки, которая наиболее часто встречается среди k соседей из обучающей выборки, ближайшей к первому объекту, где k - константа, которая задается пользователем.

Для непрерывных переменных наиболее широко используется Евклидово расстояние. Для дискретных переменных, например, для классификации текстов, может быть использована другая метрика, например, метрика Хэмминга Расстояние Хэмминга -- число позиций, в которых соответствующие символы двух слов одинаковой

длины различны. Рассчитывается как: ..

Выбор параметра k

Лучший выбор k зависит от данных. Как правило, более высокие значения k уменьшает влияние шумов на классификацию, но при этом делают границы между классами менее четкими. Хороший параметр k может быть выбран с помощью разных эвристических алгоритмов Эвристический алгоритм (эвристика) -- алгоритм решения задачи, не имеющий строгого обоснования, но, тем не менее, дающий приемлемое решение задачи в большинстве практически значимых случаев..

Точность метода k-ближайших соседей может серьезно уменьшится в результате присутствия шума или, если вес объектов не соответствует с их значимостью.

В классификации с двоичной системой счисления (где два класса), полезно k выбрать нечетным числом, чтобы избежать привязанности голосов.

3.5 Оценка качества обучения

Кросс-валидацией называют методику оценки того, насколько результаты статистического анализа будут обобщаться на независимом наборе данных. Она используется главным образом в тех задачах, где целью является предсказание, но так же она используется для того, чтобы оценить, как точно модель прогнозирования будет работать на практике. Следует подчеркнуть, что в задаче прогнозирования, модель, обычно имеет набор известных данных с известными значениями(метками; обучающая выборка) и набор неизвестных данных(без меток; тестовая выборка).[6] Кросс-валидация или перекрестная проверка делается для того, чтобы минимизировать такие проблемы, как переобучение, дать представление о том, как модель будет вести себя на независимом наборе данных (т.е., на неизвестном наборе данных).

Первый шаг кросс-валидации включает в себя разбиение данных на два подмножества: обучающую и тестовую выборки. Чтобы уменьшить возможность ошибки, проводятся несколько этапов перекрестной проверки с использованием блоков данных разного размера, далее результаты проверки усредняются.

Предположим, что мы имеем модель с одним или несколькими неизвестными параметрами и набор данных, который нужно идентифицировать(натренировать). Если мы возьмем выборку независимых данных для валидации такую же, или почти такую же, что и в качестве данных для обучения, то, как правило, получается, что модель не подходит для проверки, так как нам уже все известно заранее, или почти все. Это называется переобучением Переобучение (переподгонка, пере- в значении «слишком», англ. overfitting) в машинном обучении и статистике -- явление, когда построенная модель хорошо объясняет примеры из обучающей выборки, но достаточно плохо работает на примерах, не участвовавших в обучении (на примерах из тестовой выборки)., так происходит чаще, когда количество данных для обучения маленькое, или, когда число параметров в модели большое.

Разные типы кросс-валидации

Кросс-валидация k-блоками.

В кросс-валидации этого типа, исходная выборка случайным образом разделеляется на k одинаковых по размеру подмножеств. Из k подмножеств, один блок сохраняется как данные для тестирования модели(тестовая выборка), а остальные k-1 блоков используются в качестве обучающей выборки. Процесс повторяется k раз, с каждым из k подможеств только один раз. Результаты из каждого блока могут быть усреднены для получения единой оценки. Обычно используется кросс-валидация 10-блоками, но в целом k остается подвижным параметром.[7][8]

Повторяющийся случайным образом выбор подможеств для валидации.

Этот метод случайным образом разбивает массив данных в обучающую и тестовую выборки. Для каждого такого разбиения, модель обучает тестовую выборку и выдает процент ошибки, и, затем, результат, усредненяются после выполнения всех процедур. Преимущество этого метода (над кросс-валидацией k-блоками) в том, что доля обучающей и тестовой выборок не зависит от количества итераций. Недостатком данного метода является то, что некоторые данные, могут быть никогда не выбраны в качестве обучающей выборки, в то время как другие могут быть выбраны более чем один раз.

Ограничений и неправильное использование

Кросс-валидация дает значимые результаты только в том случае, если обучающая и тестовая выборки комплекта взяты из одной совокупности. В качестве примера, предположим, что модель прогнозирования разработана для определения индивидуального риска заболеть определенным заболеванием в течение следующего года. Если модель обучается, используя данные из исследования с участием только определенной группы населения (например, мужчины), а затем применяется к общей численности населения, результаты обучения могут значительно отличаться от реальных показателей прогноза.

Нельзя допускать того, что часть обучающей выборки будет включена и в тестовую, тогда результаты могут получиться неверными.

Следует отметить, что некоторые специалисты по статистике ставят под сомнение полезность кросс-валидации.[9]

Глава 4. Анализ и результаты

Итак, перейдем к анализу и к результатам исследования. В начале хотелось бы отметить общее число файлов типов doc и pdf, которые хранятся на сайтах университетов в открытом доступе. Эта информация бралась с помощью поисковой системы Яндекс, в которой есть возможность находить количество документов по их типу, расположенных по конкретным интернет-адресам (реализовано, используя расширенный поиск).

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

Первая категория («ведущие» учебные заведения России):

Университет

Общее количество файлов (doc, docx, pdf)

МГУ

63 000

СпбГУ

34 000

МИФИ

8 000

МФТИ

7 000

НИУ-ВШЭ

78 000

Вторая категория(«средние» учебные заведения России):

Университет

Общее количество файлов(doc, docx, pdf)

Омский ГУ

4 000

Удмуртский ГУ

14 000

Иркутский ГУ

8 000

Новгородский ГУ

14 000

Самарский ГУ

6 000

Третья категория («отстающие» учебные заведения России):

Университет

Общее количество файлов(doc, docx, pdf)

Северо-Осетинский ГУ

1

Курский ГУ

2 000

Елецкий ГУ

801

Калмыцкий ГУ

2 000

Камчатский ГУ

0

Было решено взять для анализа исключительно файлы типов doc, docx и pdf, так как остальные основные типы такие, как xls(таблицы), ppt(презентации) и pptx(презентации), не являются показательными для нас. В таблицы и презентации никогда не записывают научную или учебную литературу.

Исходя из этих таблиц видно, что на всем фоне выделяются только три университета: МГУ, СпбГУ и НИУ-ВШЭ. Если оценивать только по этому критерию(число документов), то остальные два ВУЗа из первой категории(МИФИ и МФТИ) следует отнести во вторую. Но давайте рассмотрим эти файлы по их внутренним составляющим.

Следующий наш этап: скачать все файлы с сайтов университетов. Это было реализовано с помощью программы Teleport Pro, которая была описана во второй главе этой выпускной квалификационной работы. Но так как, к сожалению, крайне сложным является возможность скачать именно все файлы с сайтов, потому что это заняло бы времени чуть меньше, чем бесконечность, было решено скачать все файлы, которые находятся на глубине не больше 7 от главной страницы сайта каждого учебного заведения. Приведем опять же три таблицы, в которых будет показано количество файлов, расположенных на сайтах университетов(на глубине не больше семи), которые были скачены для дальнейшего анализа.

Первая категория:

Университеты

Число файлов(pdf, doc, docx). Глубина поиска не больше 7.

МГУ

2 290

СпбГУ

1 452

МИФИ

681

МФТИ

474

НИУ-ВШЭ

527

Вторая категория:

Университеты

Число файлов(pdf, doc, docx). Глубина поиска не больше 7.

Омский ГУ

642

Удмуртский ГУ

585

Иркутский ГУ

488

Новгородский ГУ

381

Самарский ГУ

505

Третья категория:

Университеты

Число файлов(pdf, doc, docx). Глубина поиска не больше 7.

Северо-Осетинский ГУ

1

Курский ГУ

712

Елецкий ГУ

429

Калмыцкий ГУ

828

Камчатский ГУ

0

Из этих таблиц видно, что университеты из первого эшелона в большей степени хранят свои файлы достаточно глубоко от главной страницы их сайтов. Поэтому скачалось только от 0,7% до 8,5% файлов из общего числа документов, хранящихся в открытом доступе.

Схожая ситуация и с ВУЗами второй категории: скачалось только от 2,7% до 16% из общего числа.

Совсем иную ситуацию мы можем наблюдать среди университетов третьей категории. Если не брать в расчет Северо-Осетинский ГУ и Камчатский ГУ, где хранится только один файл на два университета, то можно заметить, что сайты не очень глубокие и всего на глубине не больше 7 находятся от 35,6% до 53,6% файлов из общего числа документов, хранящихся в открытом доступе.

Далее случайным образом были выбраны 100 файлов, которые были просмотрены и прочитаны, и которым были присвоены метки:

· 0, если документ является административно-организационный

· 1, если документ является научным

· 2, если документ является учебным

То есть мы получили вектор из 100 элементов, в котором хранятся метки. Получилось, что из этих ста файлов: 52 - с меткой 0; 23 - с меткой 1; 25 - с меткой 2.

Далее все файлы, за исключением, административно-организационных были просмотрены более подробно на предмет нахождения слов, которые характеризуют каждую из категорий файлов. Сначала был собран словать из 60 слов, который характеризовал научную и учебную литературу (для каждого раздела были выбраны 30 слов). Затем, используя программу, которая ищет по ключевым словам отношение вхождения слов к длине файла, было замечено, что большинство слов не играют яркую роль в определении каждого из разделов документов(то есть их достаточно мало). Были отсеяны некоторые из них. Итого остались 24 слова, которые входили чаще остальных:

Научная литература

Учебная литература

показывает

семинар

рассмотрим

исследовать

методы

проанализировать

анализ

пример

проанализированы

примеры

оценка

решить

оценкам

найти

закон

изучить

знания

оценить

темы

доказать

задач

привести

вклад

исследование

Именно эти слова характеризуют эти два раздела документов, так как предполагается, что вся научная литература описывается одинаковым языком, то есть ключевые слова, которые отражают научные файлы, которые лежат на интернет-сайте МГУ, не отличаются от слов, которые характеризуют документы, хранящиеся на интернет-сайте, например, Новгородского Государственного Университета.

Затем, используя программу SPSS Statistics и метод кросс-валидация, необходимо оценить вероятную ошибку при получении итоговых результатов. Каждому из ста файлов был присвоен вектор, i-ый элемент которого отвечает отношению вхождения i-ого слова к длине файла.

Приведем три таблицы, в которых видно, каков процент возможной ошибки будет при выборе разного процента обучающей и тестовой выборок, а так же при выборе разного метода классификации: метод ближайшего соседа, метод 3-ближайших соседей, метод 5-ближайших соседей. Идея заключается в том, что случайным образом выбирается обучающая выборка, исходя из заданного процента, на этой выборке мы обучаем алгоритм, а на тестовой проверяем его. Имея метки для всех 100 файлов, мы в итоге находим то, на сколько ошибся алгоритм.

Сначала для метода ближайшего соседа:

Обучающая выборка(%)

Тестовая выборка(%)

Ошибка(%)

10

90

43

20

80

37

30

70

29

40

60

27

50

50

28

60

40

21

70

30

16

80

20

12

90

10

7

Для метода 3-длижайших соседей:

Обучающая выборка(%)

Тестовая выборка(%)

Ошибка(%)

10

90

46

20

80

42

30

70

42

40

60

27

50

50

21

60

40

20

70

30

18

80

20

7

90

10

4

Для метода 5-ближайших соседей:

Обучающая выборка(%)

Тестовая выборка(%)

Ошибка(%)

10

90

44

20

80

44

30

70

36

40

60

31

50

50

30

60

40

18

70

30

18

80

20

10

90

10

2

Видно, что с переобучением не столкнулись ни в одном из методов, это может быть объяснено тем, что сто файлов для данной операции, возможно, мало.

В результате мы усредняем ошибки в каждом методе и получаем процент, который характерезует каждый алгоритм:

Ближайшего соседа

3-ближайших соседей

5-ближайших соседей

24,44%

25,22%

25,89%

Из этой таблицы можно прийти к выводу, что метод ближайшего соседа на данной выборке работает лучше всего. Им и будем пользоваться.

После этого, получаем для каждого университета набор векторов и анализируем каждый набор в отдельности на нашем алгоритме. В результате получаем доли научной, учебной и административно-оргазнизационной литературы. Ниже представлены три таблицы с конечными результатами для каждой категории учебных заведений.

Первая категория:

Университет

Научная

Учебная

Адм.-Орг.

МГУ

745 (32,5%)

782 (34,1%)

763 (33,4%)

СпбГУ

379 (26,1%)

411 (28,3%)

662 (45,6%)

МИФИ

257 (37,7%)

152 (22,3%)

272 (40,0%)

МФТИ

173 (36,5%)

124 (26,2%)

177 (37,3%)

НИУ-ВШЭ

193 (33,8%)

178 (31,1%)

201 (35,1%)

Вторая категория:

Университет

Научная

Учебная

Адм.-Орг.

Омский ГУ

114 (17,8%)

146 (22,7%)

382 (59,5%)

Удмуртский ГУ

86 (14,7%)

161 (27,5%)

338 (57,8%)

Иркутский ГУ

77 (15,8%)

93 (19,0%)

318 (65,2%)

Новгородский ГУ

52 (13,6)

128 (33,6%)

201 (52,8%)

Самарский ГУ

109 (21,6%)

84 (16,6%)

312 (61,8%)

Третья категория:

Университет

Научная

Учебная

Адм.-Орг.

Северо-Осетинский ГУ

0( 0%)

0 (0%)

1 (100%)

Курский ГУ

154 (21,6%)

82 (11,5%)

476 (66,9%)

Елецкий ГУ

53 (12,3%)

76 (17,8%)

300 (69,9%)

Калмыцкий ГУ

47 (5,7%)

171 (20,7%)

610 (73,6%)

Камчатский ГУ

0

0

0

Стоит отметить и особо «отличившихся»: Северо-Осетинский государственный университет и Камчатский государственный университет, у которых на двоих всего один файл.

В добавлении ко всему, отмечу, что все отсканированные документы или документы на других языкам автоматически попадали в класс с административно-организационными файлами.

Отбросив административно-организационные файлы, так как в сумме все компоненты составляют единицу (или 100%), получаем, что каждому университету ставится в соответствие вектор из двух элементов(доля научной литературы, доля учебной литературы). Следовательно, эти учебные заведения можно изобразить на плоскости.

рис. 1

На рисунке 1 большими кругами обозначены «ведущие» университеты, средними - «средние», маленькими - «отстающие». Видно, что каждая из категорий, кроме третьей, находятся на плоскости довольно кучно и близко друг к другу. Три университета из третьей категории расположены довольно близко ко второй, но, если брать в среднем по всем пяти, то, конечно же, показатели резко снизятся. Все из-за оставшихся двух: Северо-Осетинского государственного университета и Камчатского государственного университета. Так же стоит отметить Новгородский государственный университет. У него доля учебного контента больше, чем у большинства университетов из первого эшелона.

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

Проверим наши результаты в программе SPSS Statistics. Данный пакет имеет возможность кластеризации данных. Задав три кластера, проверим, правильно ли программа разбила анализируемые университеты на три группы. Убрав из входных данных два нулевых значения, получили, что двумя разными методами(метод k-средних и двухэтапный кластерный анализ) программа кластеризует наши данные неверно: получили, что в первом кластере пять университетов, во втором и третьем - по четыре. Если включить нулевые значения, то, используя метод k-средних, программа путается еще больше: в первом кластере восемь университетов, во втором - пять и в третьем - два. Однако, используя двухэтапный кластерный анализ, получаем более точные данные, но все же не совсем верные: в первом кластере семь университетов, во втором и третьем - по черыре.

Заключение

В этой исследовательской работе были проанализированы некоторые мировые университетские рейтинги: Webometrics и Times Higher Education World University Ranking. Выявлены их преимущества и недостатки. Поставлена задача улучшения рейтинга Webometrics путем анализа контента файлов, расположенных на университетстких порталах. Решена задача построения классификатора файлов по трем категориям: научных, учебных и административно-организационных. Выбраны векторы признаков - ключевые слова классификации. Классификатор обучен на тестовой выборке. Проведен анализ качества обучения. Проанализирована структура наполнения контентом порталов ряда российских вузов. Каждому вузу поставлен в соответствие вектор с долями научного, учебного и административно-организационного контентов. Показано, что структура наполнения контентом интернет-порталов университетов тесно связана с рейтингом университетов - кластеризация университетов по структуре наполнения контента практически совпадает с кластеризацией на «ведущие», «средние» и «слабые» вузы. К сожалению, скачать и проанализировать все файлы с интернет-сайтов университетов не представлялось возможным, так как это заняло бы огромное место на жестком диске и такое же огромное, если не еще большее, количество времени. Поэтому была взята глубина поиска по сайту, равная, семи. Так же стоит заметить, что было два университета (Северо-Осетинский государственный университет и Камчатский государственный университет), у которых не находится почти никаких файлов на их интернет-сайтах(у Северо-Осетинского ГУ - 1; у Камчатского ГУ - 0).

Хочется добавить, что возможный следующий этап исследования может быть посвящен не только отечественным учебным заведениям, но и иностранным.

Список литературы

[1] Cox, D.R., Hinkley, D.V. (1974) Theoretical Statistics, Chapman & Hall. ISBN 0-412-12420-3

[2] http://www.pivot-table.com/

[3] Jordan, Michael I.; Bishop, Christopher M. (2004). "Neural Networks". In Allen B. Tucker. Computer Science Handbook, Second Edition (Section VII: Intelligent Systems). Boca Raton, FL: Chapman & Hall/CRC Press LLC. ISBN 1-58488-360-X.

[4] Hastie Trevor, Robert Tibshirani, Friedman Jerome (2009). The Elements of Statistical Learning: Data mining, Inference and Prediction. New York: Springer. pp. 485-586. ISBN 978-0-387-84857-0.

[5] Estivill-Castro, Vladimir (20 June 2002). "Why so many clustering algorithms -- A Position Paper". ACM SIGKDD Explorations Newsletter 4 (1): 65-75. doi:10.1145/568574.568575.

[6] "Newbie question: Confused about train, validation and test data!". Retrieved 2013-11-14.

[7] McLachlan, Geoffrey J.; Do, Kim-Anh; Ambroise, Christophe (2004). Analyzing microarray gene expression data. Wiley.

[8] Geisser, Seymour (1993). Predictive Inference. New York, NY: Chapman and Hall. ISBN 0-412-03471-9.

[9] Hirsch, Robert (1991). "Validation Samples". Biometrics 47 (3): 1193-1194.

[10] Kohavi, Ron (1995). "A study of cross-validation and bootstrap for accuracy estimation and model selection". Proceedings of the Fourteenth International Joint Conference on Artificial Intelligence 2 (12): 1137-1143. (Morgan Kaufmann, San Mateo, CA)

[11] Ian H. Witten, “Text mining”, Computer Science, University of Waikato, Hamilton, New Zealand

[12] Judit Bar-Ilan, “Informetrics at the beginning of the 21st century--A review”, Journal of Informetrics 2 (2008) 1-52

[13] Золотарюк А.В. Профессиональные компьютерные программы, направление «Социология», «ПЗ. Кластерный анализ в SPSS»

[14] В. Н. Калинина, В. И. Соловьев, « Компьютерный практикум по прикладной статистике и основам эконометрики: учебное пособие для студентов вузов» -- М.: Вега-Инфо, 2010.

[15] Jose Luis Ortega, Isidro F. Aguillo, “Mapping world-class universities on the web”, Information Processing and Management 45 (2009) 272-279

[16] Rennie, J.; Shih, L.; Teevan, J.; Karger, D. (2003). "Tackling the poor assumptions of Naive Bayes classifiers". ICML.

Приложения

Приложение №1

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Wordprocessing;

using System.Xml;

using org.apache.pdfbox.pdmodel;

using org.apache.pdfbox.util;

using System.IO;

namespace PDFDOCConsole

{

class Program

{

#if (DEBUG)

static bool CanReadAndWrite(string path)

{

var perm = new System.Security.Permissions.FileIOPermission(

System.Security.Permissions.FileIOPermissionAccess.Write |

System.Security.Permissions.FileIOPermissionAccess.Read,

path);

try

{

perm.Demand();

return true;

}

catch

{

return false;

}

}

#endif

static void Main(string[] args)

{

string[] doc_files = {};

string[] pdf_files = {};

if (args.Length < 3)

{

Console.WriteLine("Неверно задано количество параметров");

Console.ReadKey();

Environment.Exit(1);

}

try

{

doc_files = Directory.GetFiles(args[0], "*.docx");

}

catch (DirectoryNotFoundException)

{

Console.Write("Директория " + args[0] + " не найдена. Невозможно получить список doc документов");

Console.ReadKey();

Environment.Exit(2);

}

try

{

pdf_files = Directory.GetFiles(args[0], "*.pdf");

}

catch (DirectoryNotFoundException)

{

Console.Write("Директория " + args[0] + " не найдена. Невозможно получить список pdf документов");

Console.ReadKey();

Environment.Exit(2);

}

#if (DEBUG)

Console.WriteLine("Найдено файлов:");

Console.WriteLine("DOC: " + doc_files.Length.ToString());

Console.WriteLine("PDF: " + pdf_files.Length.ToString());

foreach (var x in doc_files)

{

if (File.Exists(x))

{

Console.WriteLine(x + " существует");

}

else

{

Console.WriteLine(x + " не существует");

}

if (CanReadAndWrite(Environment.CurrentDirectory + "\\" + x))

{

Console.WriteLine(x + " доступен для чтения и записи");

}

else

{

Console.WriteLine(x + " не доступен для чтения и записи");

}

}

foreach (var x in pdf_files)

{

if (File.Exists(x))

{

Console.WriteLine(x + " существует");

}

else

{

Console.WriteLine(x + " не существует");

}

if (CanReadAndWrite(Environment.CurrentDirectory + "\\" + x))

{

Console.WriteLine(x + " доступен для чтения и записи");

}

else

{

Console.WriteLine(x + " не доступен для чтения и записи");

}

}

Console.ReadKey();

#endif

string text = "";

int text_length_before = text.Length;

int text_length_after = text.Length;

try

{

text = System.IO.File.ReadAllText(args[1]);

text_length_after = text.Length;

}

catch (FileNotFoundException)

{

Console.Write("Файл со словами не найден.");

Console.ReadKey();

Environment.Exit(3);

}

if(text_length_after == text_length_before)

{

Console.WriteLine("Не заданы слова для поиска.");

Console.ReadKey();

Environment.Exit(4);

}

string[] my_words = text.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',', '\n' }, StringSplitOptions.RemoveEmptyEntries);

#if (DEBUG)

Console.WriteLine(my_words.Length);

foreach (var x in my_words)

{

Console.WriteLine(x);

}

#endif

double[,] res_vector = new double[doc_files.Length + pdf_files.Length, my_words.Length];

for(int i = 0; i < doc_files.Length; ++i)

{

string doc_data = TextFromWord(doc_files[i]);

string[] source = doc_data.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',', '+', '-', '\n', '\r'}, StringSplitOptions.RemoveEmptyEntries);

for (int j = 0; j < my_words.Length; ++j)

{

var matchQuery = from word in source

where word.ToLowerInvariant() == my_words[j].ToLowerInvariant()

select word;

int wordCount = matchQuery.Count();

double word_coeff = (double)wordCount / ((double)source.Length);

res_vector[i, j] = word_coeff;

}

}

int index = 0;

for (int i = doc_files.Length; i < doc_files.Length + pdf_files.Length; ++i)

{

string doc_data = TextFromPdf(pdf_files[index]);

string[] source = doc_data.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',', '+', '-', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

for (int j = 0; j < my_words.Length; ++j)

{

var matchQuery = from word in source

where word.ToLowerInvariant() == my_words[j].ToLowerInvariant()

select word;

int wordCount = matchQuery.Count();

double word_coeff = (double)wordCount / (double)source.Length;

res_vector[i, j] = word_coeff;

}

index++;

}

#if (DEBUG)

for (int i = 0; i < doc_files.Length + pdf_files.Length; i++)

{

for (int j = 0; j < my_words.Length; j++)

{

Console.Write(res_vector[i, j] + " ");

}

Console.WriteLine();

}

Console.ReadKey();

#endif

StreamWriter str = new StreamWriter(args[2]);

for (int i = 0; i < doc_files.Length + pdf_files.Length; i++)

{

for (int j = 0; j < my_words.Length; j++)

{

str.Write(" {0:0.000000} ", Math.Round(res_vector[i, j], 6));

}

str.WriteLine();

}

str.Close();

Console.WriteLine("Выполнено!");

Console.ReadKey();

}

public static string TextFromWord(string path)

{

const string wordmlNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";

StringBuilder textBuilder = new StringBuilder();

using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(path, false))

{

NameTable nt = new NameTable();

XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);

nsManager.AddNamespace("w", wordmlNamespace);

XmlDocument xdoc = new XmlDocument(nt);

xdoc.Load(wdDoc.MainDocumentPart.GetStream());

XmlNodeList paragraphNodes = xdoc.SelectNodes("//w:p", nsManager);

foreach (XmlNode paragraphNode in paragraphNodes)

{

XmlNodeList textNodes = paragraphNode.SelectNodes(".//w:t", nsManager);

foreach (System.Xml.XmlNode textNode in textNodes)

{

textBuilder.Append(textNode.InnerText);

}

textBuilder.Append(Environment.NewLine);

}

wdDoc.Close();

}

return textBuilder.ToString();

}

public static string TextFromPdf(string path)

{

PDDocument document = PDDocument.load(path);

PDFTextStripper stripper = new PDFTextStripper();

string text = stripper.getText(document);

document.close();

return text;

}

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Виды машинного обучения, его основные задачи и методы. Подходы к классификации: логистическая регрессия, наивный байесовский классификатор, стохастический градиентный спуск, K-ближайший сосед, дерево решений, случайный лес, метод опорных векторов.

    курсовая работа [436,9 K], добавлен 14.12.2022

  • Развитие информационной среды. Ключевые принципы работы Интернет. Русскоязычные и англоязычные термины Интернет. Расширения веб-страниц. Имена тестовых файлов. URL-адрес в Интернет. Страница поисковой машины Рамблер. Поиск по ключевым словам в Интернет.

    контрольная работа [353,2 K], добавлен 04.10.2011

  • Анализ и математическая постановка задачи. Описание алгоритма действий, структурной организации программы и ее программной реализации. Текст основной программы, модулей вывода текстовых файлов на экран, извлечения ехе-файлов и подсчёта лабораторных работ.

    курсовая работа [28,1 K], добавлен 28.02.2011

  • Оценка качества поисковых систем. Индексирование по ключевым словам. Внутренние представления запросов и документов на информационно-поисковом языке. Способы улучшения поиска при помощи тезаурусов и онтологий. Ранжированный поиск (vector-space model).

    лекция [31,5 K], добавлен 19.10.2013

  • Организация, методы и наиболее распространенные возможности Internet. Использование анонимного ftp по e-mail. Краткий обзор уровней, система адресов. Поиск данных по ключевым словам (WAIS). Легальное использование, сетевая этика и дозволенное в Internet.

    курсовая работа [83,9 K], добавлен 29.03.2011

  • Обзор методов аппроксимации. Математическая постановка задачи аппроксимации функции. Приближенное представление заданной функции другими, более простыми функциями. Общая постановка задачи метода наименьших квадратов. Нахождение коэффициентов функции.

    курсовая работа [1,5 M], добавлен 16.02.2013

  • Методика и основные этапы нахождения интеграла функции sin (x+10)+x4=0 с помощью двух подходов: метод прямоугольников и метод трапеций. Составление соответствующей программы в среде Pascal. Оценка возможностей пользователя при решении данного задания.

    лабораторная работа [134,0 K], добавлен 24.09.2010

  • Сущность и назначение основных алгоритмов оптимизации. Линейное программирование. Постановка и аналитический метод решения параметрической транспортной задачи, математическая модель. Метод решения задачи об оптимальных перевозках средствами MS Excel.

    курсовая работа [465,6 K], добавлен 24.04.2009

  • Обзор особенностей работы с программой Total Commander. Создание папок, копирование файлов на флеш-карту. Вызов контекстного меню. Определение структуры файлов. Переименование группы файлов. Помещение файлов в архив. Разделение архива на несколько частей.

    лабораторная работа [1,9 M], добавлен 08.04.2014

  • Раскрытие цели сжатия файлов и характеристика назначения архиваторов как программ, осуществляющих упаковку и распаковку файлов в архив для удобства переноса и хранения. Основные типы архиваторов: файловые, программные, дисковые. Метод сжатия без потерь.

    презентация [217,8 K], добавлен 05.04.2011

  • Анализ прямого метода Данилевского нахождения собственных векторов практически любой матрицы. Возможность применения этого метода в современном программировании, и так же области науки, где пользоваться методом Данилевского было бы очень удобно.

    курсовая работа [198,2 K], добавлен 13.05.2008

  • Постановка задачи и математическое описание ее решения. Назначение программного обеспечения. Описание принятых идентификаторов. Выбор языка программирования и написание программы на входном языке. Методика отладки программы и проведение ее тестирования.

    курсовая работа [96,1 K], добавлен 25.06.2013

  • Понятие процесса архивации файлов. Программы, осуществляющие упаковку и распаковку файлов. Защита информации от несанкционированного доступа. Самораспаковывающиеся архивы. Основные характеристики программ-архиваторов. Распространенные алгоритмы сжатия.

    презентация [801,6 K], добавлен 23.10.2013

  • Си - это язык программирования общего назначения. Постановка задачи: разработка программы - калькулятора. Метод решения задачи. Алгоритм работы программы. Технические данные для использования. Описание основных функций.

    курсовая работа [14,1 K], добавлен 23.05.2002

  • Особенности работы "поисковика" дублирующихся файлов на диске. Выбор среды программирования. Разработка программного продукта. Основные требования, предъявляемые к программе, производящей поиск дублирующихся файлов на диске. Отображение скрытых файлов.

    курсовая работа [1,8 M], добавлен 28.03.2015

  • Понятие алгебраической кратности собственного значения. Вычислительные методы собственных значений и собственных векторов. Программное обеспечение некоторых алгоритмов их нахождения. Программы на языке С++. Разработка М-файлов для системы MatLab.

    реферат [286,5 K], добавлен 23.04.2012

  • Математические основы оптимизации. Постановка задачи оптимизации. Методы оптимизации. Решение задачи классическим симплекс методом. Графический метод. Решение задач с помощью Excel. Коэффициенты целевой функции. Линейное программирование, метод, задачи.

    реферат [157,5 K], добавлен 21.08.2008

  • Анализ, математическая постановка задачи. Описание алгоритма работы основной программы. Детализация отдельных участков программы. Графический интерфейс программы "15". Описания используемых типов, глобальных переменных, процедур, функций. Процесс отладки.

    курсовая работа [48,8 K], добавлен 14.02.2009

  • Поиск информации в Интернет. Поисковые системы общего назначения. Поиск по ключевым словам и в иерархической системе каталогов. Формирование почтовых сообщений. Подпись в электронном письме. Работа с адресной книгой. Вставка адреса в сообщение.

    реферат [33,7 K], добавлен 06.06.2011

  • Характеристика форматов файлов wav и mp3. Построение диаграмм прецедентов, разработка графического интерфейса и архитектуры приложения. Разработка алгоритмов работы программы: метод TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.

    курсовая работа [2,7 M], добавлен 20.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.