Речевые маркеры интолерантности и компьютерные инструменты их выявления
Определение основных типов лексических маркеров интолерантного речевого поведения. Рассмотрение базовых словарей нейтральной и интолерантной лексики. Создание программы на основе словарей. Оценка качества выделения программами интолерантной лексики.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 17.09.2018 |
Размер файла | 260,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Текст 3 (Грани):
Венеция скандалит, не желая награждать министра титулом honoris causa, а он эту Венецию вместе с мантией выписывает к себе домой - и вот радушный хозяин с ходу превращается в итальянского почетного доктора. Ненавистники и завистники в России, обзывая его невеждой, норовят лишить нашей ученой степени, а он им эдак наотмашь в лицо: цензоры вы советские, сгубившие Пастернака. Эти мрази конченые не унимаются, пытаясь созвать диссертационный совет то в Уральском университете, то в Белгородском, а то на истфаке МГУ, но там у министра все схвачено и клеветникам дают отпор. Экспертный совет ВАК голосует за лишение его докторской степени, а он не сдается, гордо отказываясь от комментариев и дожидаясь решения предпоследней инстанции - президиума ВАК. Или самой распоследней, в лице министра образования Ольги Васильевой, которая уже выразила недоумение происходящим, сообщив, что коллега не является плагиатором. Хотя в плагиате его не обвиняют даже враги.
Теперь вдруг открывается, что двое из троих упомянутых в автореферате диссертации никогда ее не читали, а третий умер и тоже наверняка не читал, однако министр готов и к такому повороту в схватке с неприятелями. Он достает из рукава свеженаколотую козырную карту. https://grani-ru-org.appspot.com/opinion/milshtein/m.264868.html
Текст 4 (Грани):
Он ужасно занят, однако будет стремиться выполнять в полном объеме требования российского законодательства. Он будет стремиться выполнять, но все-таки ужасно занят, поскольку на этом этапе его главная задача - выполнить свои функциональные обязанности в качестве президента компании "Роснефть". Там - требования, здесь - обязанности, трудно их совместить, оттого надо согласовать необходимые графики. Хотя чего их согласовывать, если уж говорить начистоту, он ведь свою позицию уже отразил в письменных показаниях и в публичных выступлениях. А позиция у него железобетонная, дополнительных вопросов не требуется. Тут сомнений никаких быть не может.
Нет-нет, Игорь Иванович не юлит, удовлетворяя общественное любопытство насчет его (не)явки в суд. Тем не менее остается неясным, придет он туда или не придет. Кажется, обязан прийти, это же свидание с Фемидой, а не рандеву на яхте. К тому же вызванный по повестке является ключевым свидетелем в деле о корзиночке, наполненной валютой. С другой стороны, где президент "Роснефти" Сечин и где какой-то там Замоскворецкий районный суд? Читайте, ваша честь, письменные показания, приговаривайте по совести, сажайте на всю катушку. А Игорь Иванович - человек, загруженный делами, чего его беспокоить всякой ерундой? Одну повестку прислали, вторую... но вы же видите, что графики не совпадают. Отстаньте от Игоря Ивановича. https://grani-ru-org.appspot.com/opinion/milshtein/m.265669.html
Текст 5 (Газета. Ru):
В Комитете Госбезопасности Белоруссии официально сообщили, что задержали гражданина Украины Павла Шаройко, подозревавшегося в шпионаже, и в данный момент ведут с ним работу. Задержанный признался, что под прикрытием журналиста вел разведывательную деятельность, а сам носит звания полковника ВСУ. Минск уже покинул первый секретарь посольства Украины, которого Шаройко назвал своим куратором.
Первую информацию о том, что в Минске задержан собственный корреспондент «Украинского радио» в Белоруссии Павел Шаройко, обнародовал на своей странице в фейсбуке руководитель Национальной общественной телерадиокомпании Украины Зураб Аласания еще 17 ноября. Тогда же он заявил, что журналисту предъявлено обвинение в шпионаже. https://www.gazeta.ru/politics/2017/11/20_a_10995926.shtml
Текст 6 (Газета. Ru):
Всего год назад в России осторожно высказывали мнение, что в случае избрания Дональда Трампа на пост президента США, в российско-американских отношениях может наступить потепление. Однако система сдержек и противовесов в американской политике не позволила этому потеплению состояться -- судя по всему, гармонизация двустороннего диалога отложена на неопределенный срок. Показательно, что лидеры двух стран до сих пор не смогли определиться, состоится ли их вторая за год встреча или нет.
Еще 3 ноября американский президент Дональд Трамп в интервью телеканалу Fox News заявил, что может встретиться с Владимиром Путиным «на полях» саммита АТЭС во вьетнамском Дананге. «Это очень важная поездка. У нас может быть встреча с Путиным», -- сказал тогда Трамп. По словам главы Белого дома, американская сторона рассчитывает, что Москва согласится «помочь» Вашингтону в урегулировании ситуации в Сирии и на Корейском полуострове. Трамп также добавил, что ему и Путину «нужно поговорить об Украине».
Правда, официально встречу американского и российского лидеров так и не анонсировала ни одна из сторон.
По словам пресс-секретаря Путина Дмитрия Пескова, «соответствующие службы» пока продолжают согласование точного времени и формата встречи двух лидеров. Официальный представитель Кремля уточнил, что обсуждается вариант ее проведения 10 ноября.
«Это будет хорошая возможность обменяться мнениями по самым горячим вопросам -- и международным, и двусторонним. В любом случае, на полях саммита АТЭС оба президента будут иметь возможность переговорить неоднократно, в случае если посчитают это необходимым», -- добавил Песков. https://www.gazeta.ru/politics/2017/11/10_a_10978196.shtml
Текст 7 (РИА Новости):
Вооруженный конфликт в Сирии продолжается с марта 2011 года. Переговоры по урегулированию сирийского кризиса проходят в Астане и Женеве. Площадка "Астана" принимает переговоры по военному аспекту сирийского урегулирования с января, состоялись уже семь раундов встреч. На астанинской площадке было согласовано положение о совместной оперативной группе по мониторингу режима прекращения боевых действий в Сирии и подписание странами-гарантами (Россией, Турцией и Ираном) меморандума о создании зон деэскалации в Сирии. https://ria.ru/politics/20171114/1508771058.html
Текст 8 (РИА Новости):
Президент Института национальной стратегии Михаил Ремизов считает, что Путин сообщит о своем намерении выдвигаться на пост президента России в декабре, но исключил возможность предновогоднего заявления.
"Как раз ближе к тем срокам, которые определены законодательством для начала избирательной кампании. В любом случае очевидно стремление Кремля провести короткую кампанию и не начинать ее раньше времени… Вряд ли это будет "под елку" -- заявление. Логично ожидать того, что это заявление будет сделано в такой активный период для того, чтобы было время его обсудить, обеспечить какую-то качественную информационную волну", -- отметил Ремизов.
Президент Центра стратегических коммуникаций, политолог Дмитрий Абзалов выразил мнение, что президент России может заявить о своем желании переизбираться в ближайшие недели, но определенно до середины декабря.
"Понятно, что это будет до середины декабря. Потому что объявлять под Новый год будет достаточно сложно, потому что, во-первых, декабрь очень насыщен, я напоминаю. У первого лица будет и бюджетное послание, и традиционная итоговая пресс-конференция, и, вероятно, общественные мероприятия. Все это достаточно интенсивно. Какая дата снизу? Вопрос очень открытый… Может быть, даже раньше декабря, в ближайшие недели три-четыре он это сделает", -- предположил Абзалов. https://ria.ru/politics/20171111/1508629201.html
Текст 9 (Луркоморье):
При этом школота может не знать научного факта, что генетическая дистанция между восточноевропейскими ашкенази и сефардами настолько серьезная, что оные вряд ли когда-то могли быть одним народом, из чего следует наиболее правдоподобная, по мнению некоторых, версия, что ашкеназы -- большей частью выходцы из Иудейской Хазарии. На самом деле все объясняется вольным или невольным смешиванием с нееврейским окружением в местах компактного проживания евреев (в течение долгих, блджад, веков). Так, например, треть сефардов оказались потомками испанцев, в незапамятные времена принявших иудаизм, треть -- метисами, и только треть нормальными круглоголовыми арменоидами, какими полагается быть ЕРЖ по всем наукам. Версия же о славяно-хазарском происхождении ашкеназов была впервые озвучена ЕРЖ Полом Векслером, а официальная наука считает её маргинальной. При её упоминании некоторые ЕРЖ и фошысты начинают срать кирпичами, ибо иметь общих праотцов обоим западло, но остальным, как обычно, похуй. https://lurkmore.co/Антисемитизм#.D0.9D.D0.95.D0.9D.D0.90.D0.92.D0.98.D0.A1.D0.A2.D0.AC
Текст 10 (Луркоморье):
Праздник -- условный рефлекс, включающийся у основной части населения планеты при виде определенного набора цифр в графе «дата». Мыслительная цепочка содержит в себе всего три звена «ДД.ММ.ГГ» -- «праздник» -- «отмечать» и у среднестатистического человека не меняется в течение всей жизни.
От праздников все чего-то ждут. Алконавт -- водки, офисный планктон -- халявной жрачки на корпоративчике, поцреоты -- Путина по телевизору, ТП -- чуда. И даже мизантропы ждут. Ждут, когда же всё это закончится.
Стол. Любой праздник теряет своё очарование, если в помещении нет стола. Стол должен быть накрыт скатертью, а скатерть накрыта едой и бухлом. На празднике принято не просто есть и пить, а НАЖИРАТЬСЯ. Если у гостя начала трещать по швам рубашка, а челюсть, поскрипывая, выдает «ещё по одной» -- это хороший знак, праздник удался. В качестве еды сгодится всё, так что радушный хозяин может невзначай скормить завалявшие продукты уже талым гостям. Каждый стол должен содержать: салаты (не менее трёх видов), мясо, гарнир к мясу, закуску к водке, фруктовую тарелку, торт. В особых случаях, необходимо зохавать плоть Самого, подозрительно похожую на хлеб.
Праздничный стол -- это синоним фразеологизма «просрать деньги», используемого в самом буквальном значении: деньги не только просираются, но и выблевываются. А потому следующий атрибут любого праздника -- это… унитаз. https://lurkmore.co/Праздник
Приложение 2
Листинг кода программы на основе словарей
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter.scrolledtext import ScrolledText
from tkinter.filedialog import *
from tkinter.messagebox import *
from pymorphy2 import MorphAnalyzer
neg=[]
neg1=[]
neutr=[]
neutr1=[]
def _open():
Analyzed_text.delete(0.0,END)
op = askopenfilename(filetypes=[("Текстовый документ",".txt")],defaultextension='.txt')
file = open(op, 'r', encoding='utf-8')
f = ' '.join(file.readlines())
file.close()
for l in f:
Analyzed_text.insert(END, l)
def _save():
global neg, neutr
sa = asksaveasfilename(filetypes=[("Текстовый документ",".txt")],defaultextension='.txt',
initialfile= 'negative_dict.txt',title='Сохранить интолерантный словарь' )
f = open(sa, "w", encoding='utf-8')
for k in sorted(neg):
f.write(k+' ')
f.close()
sa = asksaveasfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt',
initialfile='neutral_dict.txt', title='Сохранить нейтральный словарь')
f = open(sa, "w", encoding='utf-8')
for k in sorted(neutr):
f.write(k + ' ')
f.close()
def lemmatise(X1):
X=[]
m=MorphAnalyzer('C:\\Users\\user\Anaconda3\Lib\\pymorphy2\pymorphy2_dicts_ru\data')
for i in X1:
for k in i.split():
X.append(m.parse(k)[0].normal_form)
return X
def _open_neutr():
global neutr
op_neutr = askopenfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt', initialdir="./",
title="Выберите словарь нейтральных слов",initialfile="neutral.txt")
file = open(op_neutr, 'r', encoding='utf-8')
Tol_list.delete(0.0, END)
f = file.readline()
file.close()
neutr = lemmatise(f.split())
for i in neutr:
Tol_list.insert(END,i+'\n')
neutr1=sorted(set(list(neutr1)))
return neutr
def _open_neg():
global neg
op_neg = askopenfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt', initialdir="./",
title="Выберите словарь интолерантных слов",initialfile="intolerant.txt")
file = open(op_neg, 'r', encoding='utf-8')
Intol_list.delete(0.0, END)
f = file.read()
file.close()
neg = lemmatise(f.split())
for i in neg:
Intol_list.insert(END,i+'\n')
return neg
def _quit():
root.quit()
root.destroy()
exit()
def _about():
showinfo('О программе','Разработчик: Карина Шакирова, НИУ ВШЭ.\n e-mail: korin.sh.1523@gmail.com \n Использована библиотека tkinter. \n Пользуйтесь с удовольствием!')
def finder():
global neg,neutr,neutr1,neg1,op_neg,op_neutr
text=Analyzed_text.get('0.0', END).lower()
words=[]
p='.,?!*:;^%$#@/-()_"\'«»'
for s in p:
text=text.replace(s,'')
for i in text.split():
if re.match(r'[^абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+', i) == None:
words.append(i)
words=lemmatise(words)
found=[]
found_int=0
found_neutr=0
ask_count=0
if manual.get()==1:
for i in words:
if i in neg and i not in found:
found_int+=1
print(i)
found.append(i)
elif i not in neutr and i not in found:
if askyesno('Это же не опечатка?','\'%s\' - реальное слово, а не опечатка?' % i):
ask_count+=1
if askyesno('Добавить слово в интолерантный словарь?','Добавить в интолерантный словарь слово: %s'%i):
found_int+=1
print(i)
neg.append(i)
found.append(i)
else:
found_neutr += 1
neutr.append(i)
elif askyesno('Но всё-таки оно интолерантное?',
'Это слово относится к интолерантной лексике: %s' % i):
found_int += 1
found.append(i)
else:
found_neutr += 1
else:
found_neutr += 1
else:
for i in words:
if i in neg and i not in found:
found_int+=1
print(i)
found.append(i)
else:
found_neutr += 1
if len(words)!=0:
percent=found_int/len(words)*100
else:
percent=None
#print (found_neutr,found_int, len(words))
if askyesno('Обновить списки?', 'Обновить списки нейтральных и интолерантных слов?'):
op_neg = askopenfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt', initialdir="./",
title="Выберите словарь интолерантных слов", initialfile="intolerant.txt")
file = open(op_neg, 'w', encoding='utf-8')
Intol_list.delete(0.0, END)
for k in sorted(list(set(neg))):
file.write(k+' ')
Intol_list.insert(END, k + '\n')
file.close()
op_neutr = askopenfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt', initialdir="./",
title="Выберите словарь нейтральных слов", initialfile="neutral.txt")
file = open(op_neutr, 'w', encoding='utf-8')
for k in sorted(list(set(neutr))):
file.write(k+' ')
file.close()
showinfo('Обнаружено маркеров','Процент интолерантной лексики: {}'.format(percent))
if askyesno('Сохранить маркеры?','Обнаруженные маркеры: {}. \n Сохранить список?'.format(';'.join(found))):
sa = asksaveasfilename(filetypes=[("Текстовый документ", ".txt")], defaultextension='.txt',
initialfile='markers.txt', title='Сохранить обнаруженные маркеры')
f = open(sa, "w", encoding='utf-8')
for k in found:
f.write(k + ' ')
f.close()
print (ask_count)
return neg, neutr
root = Tk()
root.title('Tolerator')
menu_bar=Menu(root)
root.config(menu=menu_bar)
dict_menu=Menu(menu_bar, tearoff=0)
dict_menu.add_command(label='Загрузить нейтральный словарь',command=_open_neutr)
dict_menu.add_command(label='Загрузить интолерантный словарь',command=_open_neg)
dict_menu.add_command(label='Сохранить словари', command=_save)
menu_bar.add_command(label='Открыть файл',command=_open)
menu_bar.add_cascade(label='Словари', menu=dict_menu)
menu_bar.add_command(label='Проверить текст', command=finder)
menu_bar.add_command(label='О программе', command=_about)
menu_bar.add_command(label='Выход', command=_quit)
Frame0=Frame(root,relief=RAISED)
Frame0.pack(fill=X)
Frame1=Frame(root,relief=RAISED)
Frame1.pack(fill=BOTH)
text_label=Label(Frame0, text='Текст для анализа')
text_label.pack(side='left', padx=5, pady=5, anchor=N)
manual=IntVar()
check=Checkbutton(root,text='Ручная доводка',variable=manual)
check.pack(side='right', padx=5, pady=5, anchor=N)
list_label=Label(Frame0, text='Словарь толерантных маркеров')
list_label.pack(side='right', padx=20, pady=5, anchor=S)
list2_label=Label(Frame0, text='Словарь интолерантных маркеров')
list2_label.pack(side='right', padx=40, pady=5, anchor=S)
Analyzed_text=ScrolledText(Frame1,background='white',font=10, width=40, height=35)
Analyzed_text.pack(side='left', padx=5, pady=5, anchor=S)
Intol_list=ScrolledText(Frame1,background='white',font=10, width=25, height=35)
Intol_list.pack(side='left', padx=5, pady=5, anchor=S)
Tol_list=ScrolledText(Frame1,background='white',font=10, width=25, height=35)
Tol_list.pack(side='left', padx=5, pady=5, anchor=S)
root.mainloop()
Приложение 3
Листинг кода классификаторов на основе моделей машинного обучения
# coding: utf-8
from sklearn.model_selection import KFold
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import MultinomialNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score, precision_score, f1_score, recall_score
import numpy as np
import pandas as pd
import re
from nltk import word_tokenize, sent_tokenize
def lemmatise(X1):
from pymorphy2 import MorphAnalyzer
X=[]
m=MorphAnalyzer('C:\\Users\\user\Anaconda3\Lib\\pymorphy2\pymorphy2_dicts_ru\data')
for i in X1:
lemms=[]
for k in i.split():
lemms.append(m.parse(k)[0].normal_form)
X.append(' '.join(lemms))
return X
def proba_extraction(basic_sent, clf, vectorizer):
import operator
current_vectorizer=vectorizer
basic_list=[]
for i in word_tokenize(basic_sent):
if re.match(r'[^абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+', i.lower())==None:
basic_list.append(i)
basic_set=set(basic_list)
new_sents={}
for i in basic_set:
new_list=basic_list
for k in range(basic_list.count(i)):
new_list.remove(i)
new_sents[i]=' '.join(new_list)
base_proba=clf.predict_proba(current_vectorizer.transform(np.array([basic_sent])))
proba_diff={}
for word in new_sents.keys():
new_proba=clf.predict_proba(current_vectorizer.transform(np.array([new_sents[word]])))
proba_diff[word]=base_proba[0][0]-new_proba[0][0]
threshold=0.01
sorted_proba = sorted(proba_diff.items(), key=operator.itemgetter(1), reverse=True)
markers={}
for i in range(len(sorted_proba)):
if sorted_proba[i][1]>threshold:
markers[sorted_proba[i][0]]=sorted_proba[i][1]
return markers
def test(sent_list,clf,vect):
for sent in sent_list:
print(sent)
print (proba_extraction(sent,clf,vect))
test_files=['C:\\Users\\user\\PycharmProjects\\untitled\Тест 1.txt',
'C:\\Users\\user\\PycharmProjects\\untitled\Тест 2.txt',
'C:\\Users\\user\\PycharmProjects\\untitled\Тест 3.txt',
'C:\\Users\\user\\PycharmProjects\\untitled\Тест 4.txt',
'C:\\Users\\user\\PycharmProjects\\untitled\Тест 5.txt']
tests=[]
for file in test_files:
tests.append([])
f=open(file,'r',encoding='utf-8').read()
for k in sent_tokenize(f):
file_ru=[]
file_ru.append(k)
if file_ru!=[]:
tests[-1].append(lemmatise(file_ru))
print (tests)
df_pos = pd.read_csv('positive.csv', sep=';', header=None, names=["id","tdate","tname","ttext","ttype","trep","trtw","tfav","tstcount","tfoll","tfrien","listcount"])
df_pos['class'] = 1
df_neg = pd.read_csv('negative.csv', sep=';', header=None, names=["id","tdate","tname","ttext","ttype","trep","trtw","tfav","tstcount","tfoll","tfrien","listcount"])
df_neg['class'] = -1
res_df = pd.concat([df_pos, df_neg])
twit_X1 = res_df['ttext'].values
twit_y = res_df['class'].values
print (len(twit_X1))
twit_X=lemmatise(twit_X1)
twit_X=np.array(twit_X)
kf = KFold(n_splits=3,shuffle=True)
for train_index, test_index in kf.split(twit_X):
X_train, X_test = twit_X[train_index], twit_X[test_index]
y_train, y_test = twit_y[train_index], twit_y[test_index]
B_vectorizer = TfidfVectorizer(max_df=0.5, min_df=2, use_idf=True)
X_transformed_train = B_vectorizer.fit_transform(X_train)
Bayes_clf = MultinomialNB()
Bayes_clf.fit(X_transformed_train, y_train) # Обучаем его
y_test_predict = Bayes_clf.predict(B_vectorizer.transform(X_test))
y_predicted = Bayes_clf.predict(B_vectorizer.transform(X_test))
print (X_test[0],Bayes_clf.predict_proba(B_vectorizer.transform(X_test))[0],y_test_predict[0])
print("ACcuracy: {0}".format(accuracy_score(y_test, y_test_predict)))
print("Precision: {0}".format(precision_score(y_test, y_predicted)))
print("Recall: {0}".format(recall_score(y_test, y_predicted)))
print("F1-measure: {0}".format(f1_score(y_test, y_predicted)))
import pickle
bayes=pickle.dumps(Bayes_clf)
for testf in tests:
print ('test numb',tests.index(testf)+1)
for sent in testf:
print (test(sent,Bayes_clf,B_vectorizer))
kf = KFold(n_splits=2,shuffle=True)
for train_index, test_index in kf.split(twit_X):
X_train, X_test = twit_X[train_index], twit_X[test_index]
y_train, y_test = twit_y[train_index], twit_y[test_index]
rf_vectorizer = TfidfVectorizer(max_df=0.5, min_df=2, use_idf=True)
X_transformed_train = rf_vectorizer.fit_transform(X_train)
rf_clf= RandomForestClassifier(n_estimators = 100)
rf_clf.fit(X_transformed_train, y_train)
y_predicted = rf_clf.predict(rf_vectorizer.transform(X_test))
print("Accuracy: {0}".format(accuracy_score(y_test, y_predicted)))
print("Precision: {0}".format(precision_score(y_test, y_predicted)))
print("Recall: {0}".format(recall_score(y_test, y_predicted)))
print("F1-measure: {0}".format(f1_score(y_test, y_predicted)))
print()
import pickle
forest=pickle.dumps(rf_clf)
for testf in tests:
print ('test numb',tests.index(testf)+1)
for sent in testf:
print (test(sent,rf_clf,rf_vectorizer))
for train_index, test_index in kf.split(twit_X):
X_train, X_test = twit_X[train_index], twit_X[test_index]
y_train, y_test = twit_y[train_index], twit_y[test_index]
lg_vectorizer = TfidfVectorizer(max_df=0.5, min_df=2, use_idf=True)
X_transformed_train = lg_vectorizer.fit_transform(X_train)
lg_clf= LogisticRegression()
lg_clf.fit(X_transformed_train, y_train)
y_predicted = lg_clf.predict(lg_vectorizer.transform(X_test))
print("Accuracy: {0}".format(accuracy_score(y_test, y_predicted)))
print("Precision: {0}".format(precision_score(y_test, y_predicted)))
print("Recall: {0}".format(recall_score(y_test, y_predicted)))
print("F1-measure: {0}".format(f1_score(y_test, y_predicted)))
print()
regr=pickle.dumps(lg_clf)
for testf in tests:
print ('test numb',tests.index(testf)+1)
for sent in testf:
print (test(sent,lg_clf,lg_vectorizer))
Размещено на Allbest.ru
Подобные документы
Специализированные программы-переводчики. Возможности компьютерных словарей. Проблемы перевода многостраничной документации. Принципы, по которым построены компьютерные словари. Какие тексты нецелесообразно переводить с помощью компьютерных переводчиков.
презентация [9,2 K], добавлен 13.11.2010Решение проблемы автоматического упрощения текста на лексическом уровне: способы, методы, приложения и инструменты. Задача автоматической адаптации текста для изучающих иностранный язык. Выбор средств разработки, создание словарей замен и языковой модели.
дипломная работа [117,3 K], добавлен 28.08.2016Мировая история технологии машинного перевода как класса систем искусственного интеллекта. Классификация программ онлайн-переводчиков, поддержка функции контролируемого входного языка. Многоязычные браузеры в Интернете и перечень электронных словарей.
контрольная работа [21,6 K], добавлен 03.02.2011Проблема передачи речевого сигнала через Интернет и создание ISDN. Этапы развития технологии VoIP. Создатели программы Skype, принцип ее работы (Р2Р-архитектура) и преимущества перед другими программами. Развитие компании и спектр предоставляемых услуг.
презентация [1,7 M], добавлен 15.12.2011Проектирование программного обеспечения, позволяющего создавать и вести множество электронных словарей. Обоснование выбора программных средств решения задачи. Разработка формы входных и выходных данных. Описание модулей программы и процесса отладки.
дипломная работа [1007,7 K], добавлен 03.07.2015Рассмотрение понятия, признаков проявления (изменение размеров файлов, даты их модификации), видов (сетевые, файловые, резидентные, троянские программы) компьютерного вируса. Характеристика основных антивирусных программ: детекторов, докторов, ревизоров.
реферат [22,4 K], добавлен 05.06.2010Написание программы на языке Delphi - создание электронной записной книжки. Описание типов "запись", полей и массива, составление процедур. Создание приветствия и редактирование записи. Создание команды для вызова справки. Принцип работы программы.
контрольная работа [17,9 K], добавлен 23.09.2010Кто и почему пишет вирусы. Компьютерные вирусы, их свойства, классификация. Пути проникновения вирусов в компьютер, механизм распределения вирусных программ. Методы защиты от компьютерных вирусов. Антивирусные программы: Doctor Web, Microsoft Antivirus.
реферат [45,2 K], добавлен 27.09.2008Прикладное программное обеспечение компьютера, его классификация по назначению и применению. Управление прикладными программами. Антивирусные и коммуникационные программы. Приложения общего назначения. Мультимедиа приложения и компьютерные игры.
реферат [105,8 K], добавлен 05.06.2013Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016