180 KiB
180 KiB
In [2]:
import spacy
sp = spacy.load("ru_core_news_lg")
In [3]:
import pandas as pd
from docx import Document
import os
def read_docx(file_path):
doc = Document(file_path)
full_text = []
for paragraph in doc.paragraphs:
full_text.append(paragraph.text)
return "\n".join(full_text)
def load_docs(dataset_path):
df = pd.DataFrame(columns=["doc", "text"])
for file_path in os.listdir(dataset_path):
if file_path.startswith("~$"):
continue
text = read_docx(dataset_path + file_path)
df.loc[len(df.index)] = [file_path, text]
return df
df = load_docs("data/text/")
df["type"] = df.apply(lambda row: 0 if str(row["doc"]).startswith("tz_") else 1, axis=1)
df.info()
df.sort_values(by=["doc"], inplace=True)
display(df.head(), df.tail())
<class 'pandas.core.frame.DataFrame'> Index: 41 entries, 0 to 40 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 doc 41 non-null object 1 text 41 non-null object 2 type 41 non-null int64 dtypes: int64(1), object(2) memory usage: 1.3+ KB
doc | text | type | |
---|---|---|---|
16 | tz_01.docx | 2.2 Техническое задание\n2.2.1 Общие сведения\... | 0 |
19 | tz_02.docx | 2.2 Техническое задание\n2.2.1 Общие сведения\... | 0 |
28 | tz_03.docx | 2.2. Техническое задание\nОбщие сведения:\nВ д... | 0 |
35 | tz_04.docx | Техническое задание\n2.2.1 Общие сведения\nИнт... | 0 |
38 | tz_05.docx | 2.2 Техническое задание\n2.2.1 Общие сведения.... | 0 |
doc | text | type | |
---|---|---|---|
25 | Этапы разработки проекта2.docx | Этапы разработки проекта: заключительные стади... | 1 |
21 | Этапы разработки проекта3.docx | Этапы разработки проекта: определение стратеги... | 1 |
40 | Этапы разработки проекта4.docx | Этапы разработки проекта: реализация, тестиров... | 1 |
30 | Этапы разработки проекта5.docx | Этапы разработки проекта: стратегия и анализ\n... | 1 |
22 | Язык манипуляции данными.docx | 2.1.3. Язык манипуляции данными (ЯМД)\nЯзык ма... | 1 |
In [4]:
from gensim.models.phrases import Phraser, Phrases
def prep_text(text):
doc = sp(text)
lower_sents = []
for sent in doc.sents:
lower_sents.append([word.lemma_.lower() for word in sent if not word.is_punct and not word.is_stop and not word.is_space])
lower_bigram = Phraser(Phrases(lower_sents))
clean_sents = []
for sent in lower_sents:
clean_sents.append(lower_bigram[sent])
return clean_sents
df["prep_text"] = df.apply(lambda row: prep_text(row["text"]), axis=1)
df
Out[4]:
doc | text | type | prep_text | |
---|---|---|---|---|
16 | tz_01.docx | 2.2 Техническое задание\n2.2.1 Общие сведения\... | 0 | [[2.2, технический, задание, 2.2.1, общий, све... |
19 | tz_02.docx | 2.2 Техническое задание\n2.2.1 Общие сведения\... | 0 | [[2.2, технический, задание, 2.2.1, общий, све... |
28 | tz_03.docx | 2.2. Техническое задание\nОбщие сведения:\nВ д... | 0 | [[2.2], [технический, задание, общий, сведение... |
35 | tz_04.docx | Техническое задание\n2.2.1 Общие сведения\nИнт... | 0 | [[технический, задание, 2.2.1, общий, сведение... |
38 | tz_05.docx | 2.2 Техническое задание\n2.2.1 Общие сведения.... | 0 | [[2.2, технический, задание, 2.2.1, общий, све... |
2 | tz_06.docx | 2.2 Техническое задание\t\n1.Общие сведения\nП... | 0 | [[2.2, технический, задание, 1.общие, сведение... |
4 | tz_07.docx | Техническое задание\nОбщие сведения\nВ данном ... | 0 | [[технический, задание, общий, сведение, разде... |
33 | tz_08.docx | Техническое задание\n1 Общие сведения\n1.1 Пол... | 0 | [[технический, задание, 1, общий, сведение, 1.... |
39 | tz_09.docx | 2.2. Техническое задание\n2.2.1.\n\nОбщие свед... | 0 | [[2.2], [технический, задание, 2.2.1, общий, с... |
1 | tz_10.docx | 2.2. Техническое задание\n2.2.1. Общие сведени... | 0 | [[2.2], [технический, задание, 2.2.1], [общий,... |
5 | tz_11.docx | 2.2.\tТехническое задание\n2.2.1.\tОбщие сведе... | 0 | [[2.2], [технический, задание, 2.2.1, общий, с... |
36 | tz_12.docx | 2.2\tТехническое задание\n2.2.1\tОбщие сведени... | 0 | [[2.2, технический, задание, 2.2.1, общий, све... |
37 | tz_13.docx | 2.2. Техническое задание\n2.2.1. Общие сведени... | 0 | [[2.2], [технический, задание, 2.2.1], [общий,... |
20 | tz_14.docx | Техническое задание\nРассмотрев общие требован... | 0 | [[технический, задание, рассмотрев, общий, тре... |
27 | tz_15.docx | Техническое задание\n2.2.1. Общие сведения\nПо... | 0 | [[технический, задание, 2.2.1], [общий, сведен... |
9 | tz_16.docx | 2.2\tТехническое задание\n2.2.1\tОбщие сведени... | 0 | [[2.2, технический, задание, 2.2.1, общий, све... |
18 | tz_17.docx | 2.2 Техническое задание.\n2.2.1 Общие сведения... | 0 | [[2.2, технический, задание], [2.2.1, общий, с... |
23 | tz_18.docx | 2.2. Техническое задание\nОбщие сведения:\nПол... | 0 | [[2.2], [технический, задание, общий, сведение... |
24 | tz_19.docx | 2.2. Техническое задание\n2.2.1. Наименование ... | 0 | [[2.2], [технический, задание, 2.2.1], [наимен... |
10 | tz_20.docx | 2.2. Техническое задание\n2.2.1. Общие сведени... | 0 | [[2.2], [технический, задание, 2.2.1], [общий,... |
32 | Архитектура, управляемая модель.docx | Архитектура, управляемая модель\nАббревиатура ... | 1 | [[архитектура, управляемая, модель, аббревиату... |
15 | Введение в проектирование ИС.docx | 1. ВВЕДЕНИЕ В ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИ... | 1 | [[1], [введение, проектирование, информационны... |
0 | Встроенные операторы SQL.docx | Встроенные операторы SQL. \nКак было отмечено ... | 1 | [[встроенные, оператор, sql], [отметить, sql, ... |
8 | Методологии разработки программного обеспечени... | Методологии разработки программного обеспечени... | 1 | [[методология, разработка, программный_обеспеч... |
26 | Методологии разработки программного обеспечени... | Методологии разработки программного обеспечени... | 1 | [[методология, разработка, программный, обеспе... |
14 | Методы композиции и декомпозиции.docx | Методы композиции и декомпозиции исполняемых U... | 1 | [[метод, композиция_декомпозиция, исполнять, u... |
29 | Модели представления данных в СУБД.docx | 2.3.1. Исследование моделей информационного пр... | 1 | [[2.3.1], [исследование, модель, информационны... |
3 | Некоторые особенности проектирования.docx | Некоторые особенности проектирования под конкр... | 1 | [[особенность, проектирование, конкретный, арх... |
31 | Непроцедурный доступ к данным.docx | 2.3.2.3 Непроцедурный доступ к данным (SQL).\n... | 1 | [[2.3.2.3, непроцедурный, доступ, данным, sql]... |
34 | Процедурное расширение языка SQL.docx | Процедурное расширение языка SQL - PL/SQL.\nOr... | 1 | [[процедурный, расширение, язык, sql, pl_sql, ... |
12 | Системные объекты базы данных.docx | Системные объекты базы данных.\nСловарь данных... | 1 | [[системный, объект, база], [словарь], [первый... |
7 | Технология создания распр ИС.docx | 2. ТЕХНОЛОГИИ СОЗДАНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦ... | 1 | [[2], [технологии, создания, распределенных, и... |
13 | Требования к проекту.docx | Требования к проекту\nВведение\nОтносительно с... | 1 | [[требование, проект, введение, относительно, ... |
17 | Условия целостности БД.docx | 2.1.1.3.1. Ограничительные условия, поддержива... | 1 | [[2.1.1.3.1], [ограничительный, условие, подде... |
6 | Характеристики СУБД.docx | 2.2.2 Сравнительные характеристики SQL СУБД.\n... | 1 | [[2.2.2, сравнительные, характеристика, sql, с... |
11 | Этапы разработки проекта1.docx | Этапы разработки проекта: заключительные стади... | 1 | [[этап, разработка, проект, заключительный, ст... |
25 | Этапы разработки проекта2.docx | Этапы разработки проекта: заключительные стади... | 1 | [[этап, разработка, проект, заключительный, ст... |
21 | Этапы разработки проекта3.docx | Этапы разработки проекта: определение стратеги... | 1 | [[этап, разработка, проект, определение, страт... |
40 | Этапы разработки проекта4.docx | Этапы разработки проекта: реализация, тестиров... | 1 | [[этап_разработка, проект, реализация, тестиро... |
30 | Этапы разработки проекта5.docx | Этапы разработки проекта: стратегия и анализ\n... | 1 | [[этап, разработка_проект, стратегия, анализ, ... |
22 | Язык манипуляции данными.docx | 2.1.3. Язык манипуляции данными (ЯМД)\nЯзык ма... | 1 | [[2.1.3], [язык, манипуляция, данными, ямд, яз... |
In [5]:
from gensim.models.word2vec import Word2Vec
word2vec = Word2Vec(
sentences=df["prep_text"].explode().tolist(),
vector_size=64,
sg=1,
window=10,
epochs=5,
min_count=10,
workers=4,
seed=9,
)
In [6]:
word2vec.wv.key_to_index
Out[6]:
{'система': 0, 'работа': 1, 'требование': 2, 'база': 3, 'пользователь': 4, 'разработка': 5, 'модель': 6, 'информация': 7, 'субд': 8, 'этап': 9, 'ошибка': 10, 'функция': 11, 'являться': 12, 'таблица': 13, 'средство': 14, 'проект': 15, 'сервер': 16, 'процесс': 17, 'документ': 18, 'программа': 19, 'использовать': 20, 'состояние': 21, 'проектирование': 22, 'программный': 23, 'случай': 24, 'создание': 25, 'модуль': 26, 'время': 27, 'объект': 28, 'заказчик': 29, 'приложение': 30, 'реализация': 31, 'правило': 32, 'результат': 33, 'вид': 34, 'разработчик': 35, 'возможность': 36, 'технический': 37, 'метод': 38, 'тестирование': 39, 'следующий': 40, 'задача': 41, 'использование': 42, 'обработка': 43, 'часть': 44, 'позволять': 45, 'клиент': 46, 'интерфейс': 47, 'переход': 48, 'выполнение': 49, 'обеспечение': 50, 'информационный_система': 51, 'новый': 52, 'изменение': 53, 'атрибут': 54, 'основный': 55, 'код': 56, 'решение': 57, 'запрос': 58, 'операция': 59, 'автоматизация': 60, 'предприятие': 61, 'доступ': 62, 'язык': 63, 'уровень': 64, 'управление': 65, 'платформа': 66, 'информационный': 67, 'группа': 68, 'анализ': 69, 'каждый': 70, 'компонент': 71, 'структура': 72, 'автомат': 73, 'использоваться': 74, 'два': 75, 'продукт': 76, 'элемент': 77, 'связь': 78, 'работать': 79, 'необходимый': 80, 'тест': 81, 'реализовать': 82, 'отношение': 83, 'существовать': 84, 'общий': 85, 'область': 86, 'тип': 87, 'цель': 88, 'oracle': 89, 'организация': 90, 'сущность': 91, 'форма': 92, 'описание': 93, 'действие': 94, 'содержать': 95, 'набор': 96, 'диаграмма': 97, 'бизнес': 98, 'значение': 99, 'срок': 100, 'состав': 101, 'операционный': 102, 'подсистема': 103, '1': 104, 'вопрос': 105, 'качество': 106, 'архитектура': 107, 'системный': 108, 'обеспечивать': 109, 'перечень': 110, 'проектировщик': 111, 'ввод': 112, 'условие': 113, 'сложный': 114, 'функционирование': 115, 'выполнять': 116, 'эксплуатация': 117, 'иметь': 118, 'sql': 119, 'файл': 120, 'версия': 121, 'различный': 122, 'количество': 123, 'определение': 124, 'учёт': 125, 'схема': 126, 'отдельный': 127, 'документация': 128, 'заказ': 129, 'деятельность': 130, 'порядок': 131, 'инструкция': 132, 'web': 133, 'windows': 134, 'получить': 135, 'отчёт': 136, 'функциональный': 137, 'число': 138, 'характеристика': 139, 'ограничение': 140, 'образ': 141, 'наличие': 142, 'бд': 143, 'проблема': 144, 'основа': 145, 'администратор': 146, 'конфигурация': 147, 'server': 148, 'индекс': 149, 'контроль': 150, 'объём': 151, 'руководство': 152, 'преобразование': 153, 'сеть': 154, 'хранение': 155, 'больший': 156, 'исходный': 157, 'поиск': 158, 'пример': 159, 'представление': 160, 'задание': 161, 'представить': 162, 'реляционный': 163, 'первый': 164, 'программирование': 165, 'рис': 166, 'транзакция': 167, 'место': 168, 'проверка': 169, 'состоять': 170, 'счёт': 171, 'представлять': 172, 'взаимодействие': 173, 'простой': 174, 'спецификация': 175, 'создать': 176, 'память': 177, 'точка': 178, 'среда': 179, 'обмен': 180, 'компьютер': 181, 'наименование': 182, 'аис': 183, 'важный': 184, 'конечный_автомат': 185, 'описать': 186, 'запись': 187, 'список': 188, 'программист': 189, 'технология': 190, 'выделить': 191, 'команда': 192, '2': 193, 'связать': 194, 'создавать': 195, 'принцип': 196, 'имя': 197, 'производительность': 198, 'хранилище': 199, 'выбрать': 200, 'хороший': 201, 'рабочий': 202, 'несколько': 203, 'иметься': 204, 'режим': 205, 'поддержка': 206, 'защита': 207, 'достаточно': 208, 'требоваться': 209, 'определить': 210, 'полный': 211, 'разный': 212, 'данными': 213, 'java': 214, 'оперативный': 215, 'сведение': 216, 'соответствующий': 217, 'помощь': 218, 'относиться': 219, 'формирование': 220, 'документооборот': 221, 'выбор': 222, 'момент': 223, 'оператор': 224, 'выполнить': 225, 'пакет': 226, 'вызов': 227, 'описывать': 228, 'осуществляться': 229, 'отказ': 230, 'конкретный': 231, '1с': 232, 'аналитик': 233, 'особенность': 234, 'второй': 235, 'сторона': 236, 'поток': 237, 'привести': 238, 'разработать': 239, 'множество': 240, 'обладать': 241, 'персонал': 242, 'большинство': 243, 'определять': 244, 'надёжность': 245, 'соответствовать': 246, 'зависимость': 247, 'серверный': 248, 'способ': 249, 'товар': 250, 'построение': 251, 'входить': 252, 'подход': 253, 'создаваться': 254, '3': 255, 'назначение': 256, 'источник': 257, 'автоматизировать': 258, 'механизм': 259, 'исполнение': 260, 'возникать': 261, 'внедрение': 262, 'процедура': 263, 'высокий': 264, 'ключ': 265, 'клиентский': 266, 'сотрудник': 267, 'окончание': 268, 'раздел': 269, 'соответствие': 270, 'отметить': 271, 'сбой': 272, 'удобный': 273, 'большой': 274, 'целое': 275, 'оценка': 276, '4': 277, 'рассмотреть': 278, 'стандарт': 279, 'интернет': 280, 'узел': 281, 'методология': 282, 'процессор': 283, 'основной': 284, 'класс': 285, 'определённый': 286, 'мбайт': 287, 'включать': 288, 'загрузка': 289, 'ситуация': 290, 'параметр': 291, 'стратегия': 292, '8.1': 293, 'xp': 294, 'реальный': 295, 'т.п.': 296, 'сделать': 297, 'ресурс': 298, 'известный': 299, 'обрабатывать': 300, 'три': 301, 'определяться': 302, 'настройка': 303, 'проводиться': 304, 'содержание': 305, 'аппаратный': 306, 'ms': 307, 'физический': 308, 'выполняться': 309, 'внутренний': 310, 'данным': 311, 'внешний': 312, 'формат': 313, 'оформление': 314, 'рамка': 315, 'материал': 316, 'фирма': 317, 'стадия': 318, 'человек': 319, 'делать': 320, 'обслуживание': 321, 'год': 322, 'компания': 323, 'uml': 324, 'intel': 325, 'pentium': 326, 'хранить': 327, 'привилегия': 328, 'храниться': 329, 'требовать': 330, 'ос': 331, 'входной': 332, 'применение': 333, 'предоставлять': 334, 'расчёт': 335, 'jdbc': 336, 'microsoft': 337, 'внимание': 338, 'дата': 339, 'a': 340, 'дело': 341, 'степень': 342, 'основание': 343, 'возможный': 344, 'безопасность': 345, 'договор': 346, 'поддерживать': 347, 'зависеть': 348, 'развитие': 349, 'принять': 350, 'сложность': 351, 'программный_обеспечение': 352, 'происходить': 353, 'вывод': 354, 'становиться': 355, 'исполнитель': 356, 'текст': 357, 'указать': 358, 'предполагать': 359, 'linux': 360, 'дипломный': 361, 'эффективный': 362, 'получение': 363, 'мгц': 364, 'информационный_модель': 365, 'период': 366, 'главный': 367, 'машина': 368, 'последовательность': 369, 'какой': 370, 'соединение': 371, 'собственный': 372, 'оказаться': 373, 'строка': 374, 'предусмотреть': 375, 'предназначить': 376, 'проведение': 377, 'словарь': 378, 'ооо': 379, 'услуга': 380, 'пространство': 381, 'b': 382, 'ответ': 383, 'диск': 384, 'триггер': 385, 'разрабатывать': 386, 'конечный': 387, 'размер': 388, 'находиться': 389, 'обеспечить': 390, 'подготовка': 391, 'отсутствие': 392, 'затрата': 393, 'функционал': 394, 'отражать': 395, 'вариант': 396, 'сообщение': 397, 'жёсткий': 398, 'специальный': 399, 'современный': 400, 'целостность': 401, 'производиться': 402, 'символ': 403, 'сетевой': 404, 'говорить': 405, 'этап_анализ': 406, 'трансформация': 407, 'отдел': 408, 'лицо': 409, '=': 410, 'завершение': 411, 'дополнительный': 412, 'временной': 413, 'справочник': 414, 'особый': 415, 'зрение': 416, 'удовлетворять': 417, 'кластер': 418, 'хранить_процедура': 419, 'показать': 420, 'автоматический': 421, 'передача': 422, 'установка': 423, 'практика': 424, 'свойство': 425, 'течение': 426, 'пользовательский': 427, 'автоматически': 428, 'ряд': 429, 'получать': 430, 'cgi': 431, 'причина': 432, 'скорость': 433, 'день': 434, 'сумма': 435, 'прийтись': 436, 'автоматизированный': 437, 'некоторый': 438, 'руководитель': 439, 'передать': 440, 'позволить': 441, 'технологический': 442, 'управлять': 443, 'иерархический': 444, 'резервный': 445, 'предыдущий': 446, 'существенно': 447, 'исправление': 448, 'страница': 449, 'высоко': 450, 'распределить': 451, 'поле': 452, 'банк': 453, 'экранный': 454, '2010': 455, 'плановый': 456, 'ориентировать': 457, 'быстрый': 458, 'сайт': 459, 'задать': 460, 'create': 461, 'скрипт': 462, 'финансовый': 463, 'план': 464, 'одновременно': 465, 'дальнейший': 466, 'допустимый': 467, 'мощность': 468, 'готовый': 469, 'означать': 470, 'нагрузка': 471, 'раз': 472, 'знание': 473, 'удаление': 474, 'осуществлять': 475, 'улгту': 476, 'программный_продукт': 477, 'событие': 478, 'преимущество': 479, 'роль': 480, 'правильный': 481, 'оборудование': 482, 'бухгалтерский': 483, 'шифр': 484, 'третий': 485, 'серьёзный': 486, 'начальный': 487, 'составной_состояние': 488, 'невозможный': 489, 'номер': 490, 'непосредственно': 491, 'единый': 492, 'актуальный': 493, 'последний': 494, 'недостаток': 495, 'редактирование': 496, 'эффективность': 497, 'цена': 498, 'предполагаться': 499, 'найти': 500, 'инструмент': 501, 'слово': 502, 'обновление': 503, 'логика': 504, 'обязательный': 505, 'небольшой': 506, '5': 507, 'электронный': 508, 'патентный': 509, '7': 510, 'график': 511, 'моделирование': 512, 'весьма': 513, 'давать': 514, 'комментарий': 515, 'применяться': 516, 'on': 517, 'ось': 518, 'повышение': 519, 'каскадный': 520, 'гост': 521, 'чтение': 522, '2003': 523, 'провести': 524, 'специалист': 525, 'многим': 526, 'критерий': 527, 'iii': 528, 'прикладной': 529, 'odbc': 530, 'db2': 531, 'полностью': 532, 'построить': 533, 'право': 534, 'рекомендоваться': 535, 'стандартный': 536, 'практически': 537, 'комплекс': 538, 'модификация': 539, 'абс': 540, 'достаточный': 541, 'восстановление': 542, 'классификация': 543, 'факт': 544, 'показатель': 545, 'копия': 546, 'распределение': 547, 'разрабатываться': 548, 'достигнуть': 549, 'графический': 550, 'фактор': 551, 'станция': 552, 'подлежать': 553, 'жизненный_цикл': 554, 'исследование': 555, 'обнаружить': 556, 'учитывать': 557, 'понятный': 558, 'изменяться': 559, 'отсутствовать': 560, 'называть': 561, 'т.д.': 562, 'ориентированный': 563, 'содержаться': 564, 'выходной': 565, 'приводить': 566, '256': 567, 'драйвер': 568, 'объектный': 569, 'ключевой': 570, 'конец': 571, 'приёмка': 572, 'заключаться': 573, 'первичный': 574, 'регистрация': 575, 'ни': 576, 'полнота': 577, 'столбец': 578, 'c': 579, 'единственный': 580, 'носитель': 581, 'способность': 582, 'отображение': 583, 'единица': 584, 'предметный': 585, 'проектный': 586, 'прототип': 587, 'текстовый': 588, 'ведение': 589, '2000': 590, 'реакция': 591, '2.2': 592, 'изменить': 593, 'принятие': 594, 'касаться': 595, 'испытание': 596, 'постоянный': 597, 'мощный': 598, 'понимание': 599, 'очередь': 600, 'формализация': 601, 'psm': 602, 'производитель': 603, 'частность': 604, 'необходимость': 605, 'мера': 606, 'блок': 607, 'работник': 608, 'типовой': 609, 'сегодня': 610, 'решать': 611, 'отвечать': 612, 'идти': 613, 'ядро': 614, 'выделение_метод': 615, 'оценить': 616, 'расширение': 617, 'логический': 618, 'предъявлять': 619, 'инициировать': 620, 'любой': 621, 'работоспособность': 622, 'промышленный': 623, 'часть_конечный': 624, 'администрирование': 625, 'локальный': 626, 'принимать': 627, '+': 628, 'поставщик': 629, 'solaris': 630, 'крупный': 631, 'последующий': 632, 'иерархия': 633, 'обязательно': 634, 'понятие': 635, 'служить': 636, 'навык': 637, 'процессов': 638, 'pim': 639, 'иных': 640, 'присутствовать': 641, 'меню': 642, 'вероятность': 643, 'сравнение': 644, '6': 645, 'четко': 646, 'регламент': 647, 'apache': 648, 'доступный': 649, 'php': 650, 'категория': 651, 'г.': 652, 'ис': 653, 'перечислить': 654, '1с_предприятие': 655, 'обучение': 656, 'добавление': 657, 'запуск': 658, 'предлагать': 659, 'возникновение': 660, 'начинать': 661, 'планирование': 662, 'дублирование': 663, 'относительно': 664, 'внешний_ключ': 665, 'передавать': 666, 'потребность': 667, 'этап_проектирование': 668, 'rdbms': 669, 'тема': 670, 'документирование': 671, 'параллельный': 672, 'деталь': 673, 'старый': 674, 'корпоративный': 675, 'обратный': 676, 'вести': 677, 'аналитический': 678, 'отчётность': 679, 'предоставление': 680, 'подробный': 681, 'т.е.': 682, 'магазин': 683, 'независимость': 684, 'функциональность': 685, 'критический': 686, 'появление': 687, 'организационный': 688, 'методический': 689, 'математический': 690, 'редко': 691, 'встречаться': 692, 'виток_спираль': 693, 'внутри': 694, 'предъявление': 695, 'легко': 696, 'финансирование': 697, 'независимый': 698, 'распределить_база': 699, 'mysql': 700, 'отношение_многим': 701, 'id': 702, 'нарушение': 703, 'язык_java': 704, '2.2.1': 705, 'размещение': 706, 'оплата': 707, 'потеря': 708, 'накопление': 709, 'некорректный': 710, 'табличный': 711, 'выгрузка': 712, 'конфликт': 713, 'приём': 714, 'расход': 715, 'приходиться': 716, 'банковский': 717, 'установить': 718, 'вестись': 719, 'увеличение': 720, 'ограничить': 721, 'производственный': 722, 'интеграция': 723, 'написание': 724, 'заполнение': 725, 'сервис': 726, 'лингвистический': 727, 'iv': 728, 'путем': 729, 'обозначение': 730, '866': 731, 'предъявляться': 732, 'текущий': 733, 'изменять': 734, 'базовый': 735, 'объектный_множество': 736, 'максимальный': 737, 'гибкий': 738, 'надёжный': 739, 'сторонний': 740, 'менеджер': 741, 'протокол': 742, 'перенести': 743, 'отчётный': 744, 'вызывать': 745, 'совокупность': 746, 'фактически': 747, 'сдача': 748, 'смысл': 749, 'статья': 750, 'ранний': 751, 'написать': 752, 'составлять': 753, 'конструкция': 754, 'er': 755, '10': 756, 'стоить': 757, 'идея': 758, 'целый': 759, 'решить': 760, 'генерация': 761, 'понимать': 762, 'корпорация': 763, 'нормальный_форма': 764, 'проверить': 765, '2.2.2': 766, 'экономический': 767, 'выступать': 768, 'май': 769, 'нормативный': 770, 'компьютерный': 771, 'влиять': 772, 'устройство': 773, 'считать': 774, 'месяц': 775, 'уникальный': 776, 'тестер': 777, 'применить': 778, 'начало': 779, 'корректность': 780, '2.2.4': 781, 'значительно': 782, 'выборка': 783, 'функционировать': 784, 'int': 785, 'введение': 786, 'знать': 787, 'корректный': 788, 'правильно': 789, 'поставить': 790, 'термин': 791, 'цикл': 792, 'последовательный': 793, 'отличаться': 794, 'проходить': 795, 'doctors': 796, 'приоритет': 797, 'поведение': 798, 'предел': 799, 'предложение': 800, 'схема_база': 801, 'многих': 802, 'неверный': 803, 'проводить': 804, 'простота': 805, 'возвратный': 806, 'учётный': 807, 'informix': 808, 'зачастую': 809, 'сценарий': 810, 'рекурсивный': 811, 'пояснительный': 812, 'направление': 813, 'бухгалтерия': 814, 'дать': 815, '8': 816, 'рост': 817, 'избежать': 818, 'точность': 819, 'обращаться': 820, 'коммерческий': 821, 'ссылочный_целостность': 822, 'данную': 823, 'консультант': 824, 'записка': 825, 'пользоваться': 826, 'разрешение': 827, 'mda': 828, '2.2.3': 829, 'эвм': 830, 'показывать': 831, 'лёгкий': 832, 'апрель': 833, 'сопровождение': 834, 'широкий': 835, '15': 836, 'стоимость': 837, 'переменный': 838, 'сегмент': 839, 'постоянно': 840, 'сокращение': 841, 'смена': 842, 'малый': 843, 'название': 844, 'разработанная': 845, 'экземпляр': 846, 'рисунок': 847, 'составить': 848, 'появляться': 849, 'одинаковый': 850, 'подходить': 851, 'null': 852, 'слой': 853, 'обслуживать': 854, 'вызвать': 855, 'фаза': 856, 'друг': 857, 'исходный_код': 858, 'характер': 859, 'дистрибутив': 860, 'занимать': 861, '2.2.5': 862, 'возврат': 863, 'попытка': 864, 'измерение': 865, 'движение': 866, 'пациент': 867, '2.2.6': 868, 'n': 869, '>': 870, 'контекст': 871, 'windows_nt': 872, 'каталог': 873, 'видеть': 874, 'эквивалентный': 875, 'поддерживаться': 876, 'unix': 877, 'рекомендовать': 878, 'кэш': 879, 'полноценный': 880, 'и др.': 881, 'склад': 882, 'традиционный': 883, 'меняться': 884, 'водопад': 885, '512': 886, 'интерактивный': 887, 'ibm': 888, 'условный': 889, 'опытный': 890, 'выявить': 891, 'монитор': 892, 'журнал': 893, 'следствие': 894, 'потенциальный': 895, 'пройти': 896, 'промежуточный': 897, 'тестовый': 898, 'реквизит': 899, 'пользовательский_процесс': 900, 'пара': 901, 'фоновый': 902, 'броузер': 903, 'идентификатор': 904, 'профессиональный_субд': 905, 'специально': 906, 'case': 907, 'sun': 908, 'иной': 909, 'неделя': 910, 'равный': 911, 'привлекаться': 912, 'шаг': 913, 'риск': 914, 'итог': 915, 'трансформация_выделение': 916, 'обойтись': 917, 'участок': 918, 'строго': 919, 'алгоритм': 920, 'схема_преобразование': 921, 'предоставить': 922, 'другому': 923, 'моделировать': 924, 'вычислительный': 925, 'техника': 926, 'существенный': 927, 'положение': 928, 'кнопка': 929, 'называться': 930, 'ввести': 931, 'печать': 932, 'применять': 933, 'nt': 934, 'внести': 935, 'производство': 936, 'очевидный': 937, 'internet': 938, 'формировать': 939, 'недопустимый': 940, 'обработать': 941, 'кафедра': 942, 'отслеживать': 943, 'аутентификация': 944, 'подразделение': 945, 'производить': 946, '2.2.7': 947, 'упростить': 948, 'популярный': 949, 'структурный': 950, 'удалённый': 951, '2000/': 952, '2.1': 953, 'покупатель': 954, 'успешный': 955, 'намного': 956, 'восприятие': 957, 'stronghold': 958, 'писать': 959, 'составной': 960, 'преобразовать': 961, 'никакой': 962, 'cim': 963, 'добавляться': 964, 'другом': 965, 'мониторинг': 966, 'логики': 967, 'выход': 968, 'предусматривать': 969, 'реализоваться': 970, 'начинаться': 971, 'длина': 972, 'возвращать': 973, 'т.к.': 974, 'зависимый': 975, 'триггеры': 976, 'обозначать': 977, 'удалить': 978, 'окружение': 979, 'sdl': 980, 'согласно': 981, 'celeron': 982, 'data': 983, 'следовательно': 984, 'предъявить': 985, 'подтип': 986, 'описываться': 987, 'операционный_система': 988, 'разделение': 989, 'обмен_данными': 990, 'насколько': 991, 'подобный': 992, 'сбор': 993, 'низкий': 994, 'правило_процесс': 995, 'четвёртый': 996, 'текущий_счёт': 997, 'включить': 998, '<': 999, ...}
In [7]:
word2vec.wv.most_similar("1с", topn=3)
Out[7]:
[('8.1', 0.9879903197288513), ('бухгалтерия', 0.980316698551178), ('навык', 0.9310787320137024)]
In [8]:
word2vec.wv["1с"]
Out[8]:
array([-5.72758615e-01, -4.64142323e-01, -1.41238064e-01, -6.03196502e-01, -3.06068182e-01, 1.47344675e-02, -8.86413306e-02, 6.53996249e-05, 2.22017527e-01, -1.03922300e-01, 4.06073749e-01, -5.07203415e-02, 1.23037435e-01, -1.68328971e-01, -8.36593136e-02, 2.31885687e-01, -1.16688296e-01, 1.43522806e-02, -5.78690231e-01, 3.08529168e-01, 3.75707522e-02, 1.13559164e-01, 3.83746147e-01, 2.44788274e-01, -5.16302809e-02, -8.68294463e-02, 7.44756520e-01, 2.69289196e-01, -1.38882861e-01, 3.19430903e-02, 2.82276541e-01, -1.97692990e-01, -1.43509433e-01, -1.92271873e-01, -1.49369061e-01, 6.34338081e-01, 1.60252139e-01, 6.62923336e-01, 9.45296362e-02, -1.62105456e-01, -2.70663768e-01, 2.80816615e-01, 4.22135949e-01, -1.53156146e-01, 1.51129171e-01, 3.92942369e-01, -5.38962841e-01, -1.52189329e-01, -7.02899694e-01, -4.62726772e-01, -8.09689939e-01, 2.60302156e-01, 2.99924672e-01, 2.37710088e-01, 2.08470032e-01, 6.07197583e-01, 1.30898044e-01, 9.39554572e-01, 4.40701753e-01, -4.94057983e-01, 3.68286878e-01, -1.29404917e-01, 6.02491438e-01, -3.94566447e-01], dtype=float32)
In [9]:
word2vec.wv.doesnt_match("java php 1с oracle заказчик".split())
Out[9]:
'заказчик'
In [10]:
word2vec.wv.similarity("java", "javascript")
Out[10]:
0.83737653
In [11]:
word2vec.wv.similarity("java", "1с")
Out[11]:
0.7350806
In [12]:
word2vec.wv.most_similar(positive=["1с", "машина"], negative=["бухгалтерия"])
Out[12]:
[('лингвистический', 0.9782435297966003), ('php', 0.9754980802536011), ('mysql', 0.9643309712409973), ('java', 0.963462769985199), ('знание', 0.950555682182312), ('apache', 0.9452742338180542), ('1с_предприятие', 0.943841278553009), ('windows_nt', 0.9398906826972961), ('работать', 0.9393702745437622), ('базовый', 0.9373704791069031)]
In [13]:
word2vec.wv.most_similar(positive=["субд", "язык"], negative=["база"])
Out[13]:
[('программирование', 0.8422903418540955), ('java', 0.7840348482131958), ('использовать', 0.7770466804504395), ('php', 0.7726089954376221), ('sql', 0.7726024389266968), ('лингвистический', 0.7516488432884216), ('производитель', 0.7262539267539978), ('написание', 0.7253801226615906), ('использование', 0.7136848568916321), ('мощный', 0.7123106718063354)]
In [14]:
word2vec.wv.most_similar(positive=["java", "бухгалтерия"], negative=["машина"])
Out[14]:
[('1с', 0.9639856815338135),
('среда', 0.942729651927948),
('8.1', 0.9425337910652161),
('ориентировать', 0.9270872473716736),
('web', 0.915542483329773),
('платформа', 0.9038816094398499),
('навык', 0.8979926705360413),
('программный', 0.8968376517295837),
('компания', 0.8852423429489136),
('лингвистический', 0.8833838105201721)]
In [15]:
word2vec.wv.most_similar(positive=["866", "мбайт"], negative=["мгц"])
Out[15]:
[('256', 0.9967159628868103), ('512', 0.9953411221504211), ('pentium', 0.9951350688934326), ('iii', 0.9946882724761963), ('celeron', 0.9945207834243774), ('iv', 0.9916473031044006), ('intel', 0.9878745079040527), ('2003', 0.9863777756690979), ('процессор', 0.9855839610099792), ('c', 0.9850897192955017)]
In [18]:
word2vec.wv.most_similar(positive=["866", "память"], negative=["процессор"])
Out[18]:
[('256', 0.9890534281730652), ('мбайт', 0.9886034727096558), ('мгц', 0.9871484637260437), ('pentium', 0.9858012199401855), ('celeron', 0.9855312705039978), ('c', 0.9849308133125305), ('512', 0.9843060970306396), ('iii', 0.9841062426567078), ('iv', 0.9838903546333313), ('высоко', 0.9828835129737854)]
In [19]:
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, max_iter=1000, random_state=9)
coords_df = pd.DataFrame(
tsne.fit_transform(word2vec.wv[word2vec.wv.key_to_index]), columns=["x", "y"]
)
coords_df["token"] = word2vec.wv.key_to_index.keys()
coords_df
Out[19]:
x | y | token | |
---|---|---|---|
0 | -24.734394 | -7.651334 | система |
1 | -30.030426 | -18.815897 | работа |
2 | -26.821131 | 2.513596 | требование |
3 | -8.133460 | 24.581547 | база |
4 | -20.158037 | 3.450009 | пользователь |
... | ... | ... | ... |
1038 | 6.665592 | -2.917084 | некий |
1039 | 18.308809 | 9.314460 | самым |
1040 | 12.663247 | -1.679625 | похожий |
1041 | 7.762640 | 1.464980 | целесообразный |
1042 | -0.540131 | -15.037376 | обследование |
1043 rows × 3 columns