まず、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を使用して効果的に活用することができます。