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

如何从非结构化文本生成数据表及将Ngram结果转CSV(Python/R)

一、将Ngram字典转换为CSV文件(Python)

提供两种实用实现方式:

  • 方法1:使用内置csv模块(无需额外安装依赖)
import csv

# 你的Ngram字典
ngram_dict = {'vida': 113, 'sistema': 104, 'ejemplo': 56}

# 写入CSV文件
with open('ngram_counts.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['words', 'Count'])  # 写入表头
    for word, count in ngram_dict.items():
        writer.writerow([word, count])
  • 方法2:使用pandas(代码更简洁,适合处理大规模数据)
import pandas as pd

ngram_dict = {'vida': 113, 'sistema': 104, 'ejemplo': 56}

# 字典转DataFrame,直接保存为CSV
pd.DataFrame(list(ngram_dict.items()), columns=['words', 'Count'])\
  .to_csv('ngram_counts.csv', index=False, encoding='utf-8')
二、从非结构化文本创建数据表

Python实现

场景1:文本行自带分隔规则(如逗号、空格分隔)

如果文本内容是每行对应一条结构化记录,直接按分隔符拆分:

import pandas as pd

# 读取文本并按分隔符分割列,自定义表头
df = pd.read_csv('unstructured_text.txt', sep=',', names=['word', 'count', 'category'])
# 保存为结构化CSV
df.to_csv('structured_table.csv', index=False)

场景2:从自由文本提取结构化信息(如实体、关键词)

用spaCy提取实体示例:

import pandas as pd
import spacy

# 加载对应语言模型(需提前安装:pip install spacy && python -m spacy download en_core_web_sm)
nlp = spacy.load("en_core_web_sm")

# 读取非结构化文本文件
with open('raw_text.txt', 'r', encoding='utf-8') as f:
    raw_text = f.read()

# 提取实体并整理为数据表
doc = nlp(raw_text)
entity_list = [{'Entity': ent.text, 'Type': ent.label_} for ent in doc.ents]
pd.DataFrame(entity_list).to_csv('entity_table.csv', index=False)

R实现

场景1:按分隔符拆分文本行

# 读取文本文件
text_lines <- readLines("unstructured_text.txt", encoding = "UTF-8")

# 分割每行数据并转为数据框
structured_df <- do.call(rbind, strsplit(text_lines, ","))
colnames(structured_df) <- c("word", "count", "category")

# 保存为CSV
write.csv(structured_df, "structured_table.csv", row.names = FALSE, fileEncoding = "UTF-8")

场景2:提取文本关键词生成数据表

用tidytext工具包:

library(tidytext)
library(dplyr)
library(readr)

# 读取非结构化文本
raw_text <- read_file("raw_text.txt", locale = locale(encoding = "UTF-8"))

# 分词并统计词频,生成数据表
word_table <- data.frame(text = raw_text) %>%
  unnest_tokens(word, text) %>%
  count(word, sort = TRUE) %>%
  rename(Count = n)

# 保存结果
write.csv(word_table, "word_freq_table.csv", row.names = FALSE, fileEncoding = "UTF-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:48:08