Python实现法语文本文件读取并存储为列表(用于TF-IDF计算)
读取法语文档并准备TF-IDF计算的完善方案
看起来你已经有了一个不错的开头!针对读取法语文档并存储为字符串列表的需求,我帮你完善代码并补充一些关键细节,方便后续的TF-IDF计算:
完整可运行代码
import os import glob # 定义你的语料库根路径 corpus_directory = "/Corpus" # 获取语料库下的所有文件路径(可按需过滤文件类型,比如只取.txt) file_paths = glob.glob(os.path.join(corpus_directory, "*")) # 如果仅需处理文本文件,修改为:glob.glob(os.path.join(corpus_directory, "*.txt")) # 初始化存储文档内容的列表 documents = [] # 可选:如果需要关联文件名和对应内容,用字典存储更方便 document_map = {} for path in file_paths: # 跳过目录,只处理实际文件 if not os.path.isfile(path): continue try: # 法语文档常用编码为utf-8或iso-8859-1(latin-1),根据你的文件实际情况调整 with open(path, 'r', encoding='utf-8', errors='replace') as file: full_content = file.read() documents.append(full_content) # 存储文件名(不含路径)和内容的映射 document_map[os.path.basename(path)] = full_content except Exception as e: print(f"读取文件 {path} 时发生错误: {str(e)}") # 验证结果 print(f"成功读取 {len(documents)} 个法语文档")
关键细节说明
- 编码处理:法语包含é、è、ç等特殊字符,必须指定正确编码才能避免乱码或读取失败。优先尝试
utf-8,如果你的文档是旧格式,换成encoding='iso-8859-1'即可。errors='replace'参数会用占位符替换无法解码的字符,防止程序直接崩溃。 - 过滤非文件:
glob.glob可能会匹配到目录,所以加入os.path.isfile检查确保只处理实际文件。 - 数据结构选择:如果后续需要追踪某个文档的来源,
document_map字典比单独的列表更实用,能快速关联文件名和内容。
后续TF-IDF预处理提示
读取完原始文本后,你还需要做一些法语专属的文本清洗,才能让TF-IDF计算更准确:
- 转小写:把所有文本转为小写,避免"Bonjour"和"bonjour"被当成不同词汇
- 去除标点和特殊字符:可以用正则表达式
re.sub(r'[^\w\s]', '', content)处理 - 停用词过滤:法语有大量无意义的停用词(比如"le"、"la"、"de"),可以用
nltk或spacy的法语停用词表过滤 - 词形还原:使用法语NLP工具(如spacy的fr_core_news_sm模型)把词汇还原为原形,比如"manges"还原为"manger"
内容的提问来源于stack exchange,提问作者HelpASisterOut
相关产品推荐
相关产品推荐

