Как сделать матрицу совместного вхождения в разреженном формате из списка предложений? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть файл .txt, содержащий список предложений, и я хочу создать матрицу совместного использования в разреженном формате (формат tdf). Вот необработанные данные:

I want an ape which eats bananas
This is an ape who like bananas 
Bananas grow on that tree
That ape lives in a tree
Bananas and the ape are on the tree
The ape lives in a cave

И желаемые результаты должны быть в разреженном формате:

Ape         bananas     3
Ape         tree        2
Ape         cave        1
Bananas     tree        2
Etc..
Etc..

Для этого я сгенерировал список из спискаслова в каждом предложении. И список уникальных слов:

#open file
with open("sentences.txt") as f:
    rawdata = f.read().splitlines()

#create list of a list with all individual sentences, result is sentence_list
sentence_list = []

for line in rawdata:
    sentence  = line.split(" ")
    sentence_list.append(sentence)

#Create list of all individual words, result is uniqwords
allwords = []

for line in sentence_list:
    for item in line:
        allwords.append(item)

uniqwords = sorted(set(allwords)) #remove duplicate words and sort

print(uniqwords)

Результаты таковы:

sentence_list = [
                    ['I', 'want', 'an', 'ape', 'which', 'eats', 'bananas'],
                    ['This', 'is', 'an', 'ape', 'who', 'like', 'bananas'], 
                    ['Bananas', 'grow', 'on', 'that', 'tree'],
                    [etc...]]

uniqwords = ['a', 'an', 'and', 'ape', 'are', 'bananas', 'cave', 'etc...']

Теперь я думаю, что я должен создать массив, который содержит три столбца: слово x, слово y иколичество их совпадений в одном предложении. У вас, ребята, есть хорошее решение этой проблемы?

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