Untitled

 avatar
unknown
plain_text
10 days ago
1.0 kB
3
Indexable
def word_follow_matrix(sentences):
    words_list = [sentence.split() for sentence in sentences]  # Tokenize sentences
    unique_words = sorted(set(word for words in words_list for word in words))  # Unique words sorted

    word_index = {word: i for i, word in enumerate(unique_words)}  # Map words to indices
    n = len(unique_words)
    
    # Initialize matrix with 0s
    matrix = [[0] * n for _ in range(n)]

    # Populate matrix based on word-follow relationships within sentences
    for words in words_list:
        for i in range(len(words) - 1):
            row, col = word_index[words[i]], word_index[words[i + 1]]
            matrix[row][col] = 1

    # Print header row
    print("\n    ", "  ".join(unique_words))
    
    # Print matrix with row labels
    for word in unique_words:
        print(word.ljust(5), "  ".join(map(str, matrix[word_index[word]])))

# Get multiple sentences from user
sentences = input("Enter multiple sentences (separated by '. '): ").split('. ')
word_follow_matrix(sentences)
Leave a Comment