You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现NLTK中Bigram FreqDist筛选后相关词对的可视化绘制?

Filtering and Visualizing Specific Bigram Pairs from NLTK's BigramFreqDist

Absolutely! You can easily filter your BigramFreqDist results to focus only on the relevant word pairs, then visualize them directly with NLTK and Matplotlib. Let’s walk through a practical example using text data from NLTK’s built-in corpus (you can swap this out with your own text).

Step 1: Set Up Your Tools

First, import the necessary libraries and load your text data. We’ll use Moby Dick from nltk.book for this example:

import nltk
from nltk.collocations import BigramCollocationFinder
from nltk.book import text1
import matplotlib.pyplot as plt

# Uncomment below if you haven't downloaded NLTK's book data yet
# nltk.download('book')

Step 2: Generate the Bigram Frequency Distribution

Create a BigramCollocationFinder to extract bigrams and their frequencies:

# Extract bigrams from the text
bigram_finder = BigramCollocationFinder.from_words(text1)
# Get the frequency distribution of all bigrams
bigram_freq = bigram_finder.ngram_fd

Step 3: Filter Relevant Bigram Pairs

Choose a filtering strategy that matches your needs—here are two common scenarios:

Option 1: Filter by Frequency (e.g., Only Pairs with Count ≥ X)

If you want to focus on the most frequent bigrams, set a minimum frequency threshold:

# Keep only bigrams that appear 50+ times
filtered_by_freq = [(pair, count) for pair, count in bigram_freq.items() if count >= 50]
# Convert to a new FreqDist object for easy plotting
filtered_freq_dist = nltk.FreqDist(dict(filtered_by_freq))

Option 2: Filter by Keyword (e.g., Pairs Containing a Specific Word)

If you care about bigrams that include a target word (like "whale"), filter for pairs that contain that word:

# Keep only bigrams that include the word "whale"
filtered_by_word = [(pair, count) for pair, count in bigram_freq.items() if "whale" in pair]
filtered_word_freq_dist = nltk.FreqDist(dict(filtered_by_word))

Step 4: Visualize the Filtered Results

Use NLTK’s built-in plot() method (which leverages Matplotlib) to visualize your filtered bigrams:

# Plot frequency-filtered bigrams
plt.figure(figsize=(12, 6))
filtered_freq_dist.plot(title="Top Bigrams (Frequency ≥ 50) in Moby Dick")
plt.show()

# Plot keyword-filtered bigrams
plt.figure(figsize=(12, 6))
filtered_word_freq_dist.plot(title="Bigrams Containing 'whale' in Moby Dick")
plt.show()

Extra Tips

  • To show only the top N bigrams, add a number to the plot() method (e.g., filtered_freq_dist.plot(20) for the top 20).
  • If your filtered list is empty, adjust your threshold (lower the frequency limit or check if your keyword is spelled correctly in the text).
  • For custom styling, use Matplotlib’s built-in functions to tweak colors, labels, or layout.

Hope this helps you zero in on exactly the bigram pairs you’re interested in!

内容的提问来源于stack exchange,提问作者glenndino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:03:12