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

如何使用amueller的wordcloud库生成尼泊尔语词云?

嘿,我来帮你搞定用amueller的wordcloud库生成尼泊尔语词云的事儿!结合你提到的Setopati网站和需求,我整理了一步步的实操方案,亲测可用:

1. 先装必要的依赖库

首先得把需要的工具包装上,除了wordcloud本身,还要爬网页的requests、解析HTML的BeautifulSoup,以及处理尼泊尔语分词的indic-nlp-library:

pip install wordcloud requests beautifulsoup4 indic-nlp-library
2. 爬取Setopati的网页内容

Setopati是尼泊尔语新闻站,爬的时候要注意编码(必须是UTF-8),不然会乱码。下面是爬取并提取正文的示例代码,你可以根据网站实际结构调整选择器:

import requests
from bs4 import BeautifulSoup

# 目标网站URL
url = "https://setopati.com/"
# 加个User-Agent避免被反爬
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}

response = requests.get(url, headers=headers)
response.encoding = "utf-8"  # 强制指定UTF-8编码,确保尼泊尔语显示正常

# 解析网页,提取所有段落文本(如果正文在特定div里,就替换成对应的选择器)
soup = BeautifulSoup(response.text, "html.parser")
text_content = " ".join([p.get_text().strip() for p in soup.find_all("p")])

# 也可以用你提供的示例文本先测试
# text_content = """今日版面 English Logo 首页 政治 社会 观点 购物 艺术 体育 旅游 博客 文学天地 全球 图片库 总理的健康状况如何?政府取消辛迪加后全国票务柜台关闭 乌彭德拉·亚达夫再次发出不承认宪法的威胁 保德尔对德乌帕说——即使不是总理,甘尼什曼也被民众……"""
3. 处理尼泊尔语文本(分词+去停用词)

尼泊尔语不像英语靠空格分词,得用专门的工具。另外要过滤掉无意义的停用词(比如“को”“मा”这类虚词):

from indicnlp.tokenize import indic_tokenize

# 用indic-nlp分词尼泊尔语文本
tokenized_text = indic_tokenize.trivial_tokenize(text_content, lang="ne")

# 尼泊尔语停用词示例,你可以找更完整的列表扩展
nepali_stopwords = ["को", "मा", "ले", "लाई", "हरु", "थिए", "थियो", "हो", "हुन्छ", "हुने", "गर्नु", "गरेको", "यो", "यी", "उनको", "उनीहरु", "के", "कुनै", "जुन", "जस्तो", "तर", "अनि", "अरु", "भने", "भन्छन्"]

# 过滤停用词,同时只保留尼泊尔语字符(Unicode范围U+0900到U+097F)
filtered_tokens = [
    token for token in tokenized_text 
    if token not in nepali_stopwords and '\u0900' <= token <= '\u097F'
]

# 把处理后的词拼接成字符串
processed_text = " ".join(filtered_tokens)
4. 生成尼泊尔语词云(核心:选对字体!)

这是最容易踩坑的地方——默认字体不支持尼泊尔语,必须用支持Devanagari脚本的字体,比如Noto Sans Devanagari(免费可下载):

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 替换成你下载的字体文件路径
font_path = "NotoSansDevanagari-Regular.ttf"

# 配置词云参数
wordcloud = WordCloud(
    font_path=font_path,
    width=800,
    height=600,
    background_color="white",
    max_words=200,
    collocations=False  # 避免生成词组,只保留单个词
).generate(processed_text)

# 显示词云
plt.figure(figsize=(10, 8))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

# 保存词云到本地
wordcloud.to_file("nepali_wordcloud.png")
几个关键提示
  • 字体必选对:如果词云显示方块,100%是字体不支持尼泊尔语,一定要用Noto Sans Devanagari这类支持Devanagari脚本的字体。
  • 网页解析灵活调整:Setopati的网页结构可能会更新,你可以用浏览器的开发者工具查看正文所在的标签,调整BeautifulSoup的选择器。
  • 停用词优化:找一份完整的尼泊尔语停用词列表,能大幅提升词云的质量,过滤掉无关的虚词。
  • 编码别出错:爬取时一定要设置response.encoding = "utf-8",否则尼泊尔语会变成乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:27:42