Найдите в файле предложение, наиболее похожее на предложение ввода | НЛП
Опубликовано: 15 Февраля, 2022
В этой статье мы найдем в файле предложение, наиболее похожее на предложение ввода.
Пример:
Содержание файла: "Это фильм". "Это романтический фильм" "Это девушка." Ввод: «Это мальчик». Аналогичное предложение для ввода: «Это девушка», «Это фильм».
Подход:
- Создайте список для хранения всех уникальных слов файла.
- Преобразуйте все предложения файла в двоичный формат, сравнивая каждое слово с содержимым списка после очистки (удаления стоп-слова, выделения корней и т. Д.)
- Преобразуйте входное предложение в двоичный формат.
- Найдите количество похожих слов во входном предложении к каждому предложению и сохраните значение в списке, названном индексом сходства.
- Найдите максимальное значение индекса сходства и верните предложение, содержащее максимальное количество похожих слов.
Содержание файла:
Code to get a similar sentence:
Python3
from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize, sent_tokenize import nltk from nltk.corpus import stopwords nltk.download( "stopwords" ) ps = PorterStemmer() f = open ( "romyyy.txt" ) a = sent_tokenize(f.read()) # removal of stopwords stop_words = list (stopwords.words( "english" )) # removal of punctuation signs punc = """!()-[]{};:"", <>./?@#$%^&*_~""" s = [(word_tokenize(a[i])) for i in range ( len (a))] outer_1 = [] for i in range ( len (s)): inner_1 = [] for j in range ( len (s[i])): if s[i][j] not in (punc or stop_words): s[i][j] = ps.stem(s[i][j]) if s[i][j] not in stop_words: inner_1.append(s[i][j].lower()) outer_1.append( set (inner_1)) rvector = outer_1[ 0 ] for i in range ( 1 , len (s)): rvector = rvector.union(outer_1[i]) outer = [] for i in range ( len (outer_1)): inner = [] for w in rvector: if w in outer_1[i]: inner.append( 1 ) else : inner.append( 0 ) outer.append(inner) comparison = input ( "Input: " ) check = (word_tokenize(comparison)) check = [ps.stem(check[i]).lower() for i in range ( len (check))] check1 = [] for w in rvector: if w in check: check1.append( 1 ) # create a vector else : check1.append( 0 ) ds = [] for j in range ( len (outer)): similarity_index = 0 c = 0 if check1 = = outer[j]: ds.append( 0 ) else : for i in range ( len (rvector)): c + = check1[i] * outer[j][i] similarity_index + = c ds.append(similarity_index) ds maximum = max (ds) print () print () print ( "Similar sentences: " ) for i in range ( len (ds)): if ds[i] = = maximum: print (a[i]) |
Выход:
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.