Pythonでのn-gramの実装と応用方法


まず、Pythonでn-gramを実装するために、次のような関数を作成します。

def generate_ngrams(text, n):
    words = text.split()
    ngrams = []
    for i in range(len(words)-n+1):
        ngrams.append(words[i:i+n])
    return ngrams

この関数は、与えられたテキストとnの値に基づいて、n-gramを生成します。テキストは単語ごとに分割され、n個の単語からなる連続した組み合わせが抽出されます。

次に、n-gramの応用方法の一つとして、テキストの予測や補完があります。例えば、与えられた単語の前後のn-gramを取得し、それを元に次に来る単語を予測することができます。

def predict_next_word(text, n, current_word):
    ngrams = generate_ngrams(text, n)
    next_words = []
    for gram in ngrams:
        if gram[:-1] == current_word:
            next_words.append(gram[-1])
    return next_words

この関数は、与えられたテキストとnの値、そして現在の単語に基づいて、次に来る単語の候補を予測します。n-gramの中から現在の単語の前後の組み合わせを見つけ、その後の単語を抽出して返します。

さらに、n-gramを用いてテキストの類似度を計算することもできます。例えば、2つのテキストのn-gramを生成し、共通のn-gramの割合を計算することで、それらの類似度を推定することができます。

def calculate_similarity(text1, text2, n):
    ngrams1 = set(generate_ngrams(text1, n))
    ngrams2 = set(generate_ngrams(text2, n))
    common_ngrams = ngrams1 & ngrams2
    similarity = len(common_ngrams) / len(ngrams1)
    return similarity

この関数は、与えられた2つのテキストとnの値に基づいて、それらの類似度を計算します。n-gramを生成し、共通のn-gramの数を求め、それらの割合を計算します。

これらはn-gramの一部の応用方法ですが、他にもテキスト生成や情報抽出など、さまざまな応用があります。n-gramは、自然言語処理の基礎的な手法の一つであり、Pythonを使用して効果的に活用することができます。