def compare_phrase(P1, P2): word_tokenizer = WPT() words1 = word_tokenizer.tokenize(P1) words2 = word_tokenizer.tokenize(P2) P = 1.0 for i in range(max(len(words1), len(words2))): p = {-1: 1, 0: 1, 1: 1} for j in p.keys(): try: p[j] *= compare(words1[i], words2[i + j]) except IndexError: p[j] = 0 P *= max(p.values()) return P
import operator import nltk # managing and removing stopwords from nltk.corpus import stopwords # handling sentiment related tasks from nltk.classify import NaiveBayesClassifier from nltk.sentiment import SentimentAnalyzer from nltk.sentiment.util import * sentiment_analyzer = SentimentAnalyzer() # word punctuation tokenizer, it will extract all the punctuations as separate from nltk.tokenize import WordPunctTokenizer as WPT wpt = WPT() # sentence tokenizer using pretrained nltk model sentence_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') contractions = { "ain't": "are not", "aren't": "are not", "can't": "cannot", "can't've": "cannot have", "'cause": "because", "could've": "could have", "couldn't": "could not", "couldn't've": "could not have", "didn't": "did not", "doesn't": "does not",
from pymorphy2 import MorphAnalyzer as MA from nltk.tokenize import PunktSentenceTokenizer as PST from nltk.tokenize import WordPunctTokenizer as WPT import string from nltk.corpus import stopwords import gensim import sys ma = MA() st = PST() wt = WPT() text1 = """Каждый человек имеет право на образование. Образование должно быть бесплатным, по меньшей мере, в том, что касается начального и общего образования. Начальное образование должно быть обязательным. Техническое и профессиональное образование должно быть общедоступным, и высшее образование должно быть одинаково доступным для всех на основе способностей каждого.""" text2 = """Каждый человек имеет право на образование. Образование должно быть, по крайней мере, на ранних этапах, и по крайней мере базовое, начальное образование должно быть обязательным, техническое и профессиональное образование должно быть обобщено, а доступ к высшему образованию должен быть обеспечен наравне со всеми и на основе компетенции.""" sys.stdout = open('Result1.txt', 'w') tokens1 = wt.tokenize(text1) # Разбиваем на слова tokens2 = wt.tokenize(text2) functors_pos = {'INTJ', 'PRCL', 'CONJ', 'PREP'} # Удаляем пунктуацию tokens1 = [i for i in tokens1 if ( i not in string.punctuation )]
from nltk.tokenize import WordPunctTokenizer as WPT MIN_P = 0.55 MIN_W = 0.62 PUNKT = ['.', ',', ':', '!', '?'] DIGITS = [str(i) for i in range(10)] TO_REMOVE = PUNKT + DIGITS wpt = WPT() def ngramm_compare_phrase(P1, P2): words1 = [word for word in wpt.tokenize(P1) if word not in TO_REMOVE] words2 = [word for word in wpt.tokenize(P2) if word not in TO_REMOVE] P = 1.0 for i in range(max(len(words1),len(words2))): p = {-1:1, 0:1, 1:1} for j in p.keys(): try: p[j] *= ngramm_compare(words1[i], words2[i+j]) except IndexError: p[j] = 0 P *= max(p.values()) return P def ngramm_compare(S1,S2): S1 = S1.replace(" ", "") S2 = S2.replace(" ", "") ngrams = [S1[i:i+3] for i in range(len(S1))] count = 0 for ngram in ngrams: count += S2.count(ngram)
from requests import get #импортируем метод get для запросов from pymystem3 import Mystem #морфологический анализатор для русского языка from nltk.tokenize import PunktSentenceTokenizer as PST #Класс для выделения предложений from nltk.tokenize import WordPunctTokenizer as WPT #класс для разделения слов в предложении from pymystem3 import Mystem #морфологический анализатор для русского языка from threading import Thread # ипортируем библиотеку для многопоточного программирования st = PST() #обозначение переменных как класс wt = WPT() #обозначение переменных как класс Names1 = {} #создаем словарь для имен из первого текста Names2 = {} #создаем словарь для имен из второго текста my_file1 = open( "some1.txt", "r", encoding='utf-8' ) #открыть файл с именем some1.txt с кодировкой utf-8 на чтение my_file2 = open( "some2.txt", "r", encoding='utf-8' ) #открыть файл с именем some2.txt с кодировкой utf-8 на чтение text1 = my_file1.read( ) #в переменную text1 запоминаем все данные из файла some1.txt text2 = my_file2.read( ) #в переменную text2 запоминаем все данные из файла some2.txt def paral1(): for sentence in st.sentences_from_text( text1): #выделяем из текста1 предложение и бежим по нему for word in wt.tokenize( sentence): #бежим по словам в выделенном тексте m = Mystem() analize = m.analyze(word) #Морфологический анализ слова