📄 文本数据挖掘

自然语言处理基础 另类因子 · 第4讲

🧠 自然语言处理基础 NLP Pipeline

🔤 核心任务

  • 分词 词法分析
  • 词性标注 POS Tagging
  • 命名实体识别 NER
  • 依存句法 结构理解
  • 情感/主题 另类信号

💡 文本因子挖掘:从公告、新闻、社交媒体中提取情绪、注意力、不确定性等信号。

⚙️ 预处理流程

  1. 清洗 & 去噪 (HTML, 特殊符号)
  2. 分词 (Tokenization)
  3. 去停用词 (Stopwords)
  4. 词干/词形还原 (Stemming/Lemmatization)
  5. 向量化 (TF-IDF / Word2Vec)
📌 另类数据关键 中文需特殊处理 (Jieba),英文用 NLTK。

✂️ 分词技术 Jieba (中文) · NLTK (英文)

🇨🇳 Jieba 分词

  • 精确模式:最常用,适合文本分析
  • 全模式:速度快,冗余多
  • 搜索引擎模式:细粒度,召回高
  • 自定义词典:金融术语、公司名
import jieba
# 精确模式
words = jieba.lcut("量化因子挖掘关注另类数据")
# ['量化', '因子', '挖掘', '关注', '另类', '数据']

# 添加自定义词
jieba.add_word("另类数据")
words = jieba.lcut("另类数据因子挖掘")
# ['另类数据', '因子', '挖掘']

🌐 NLTK 分词

  • word_tokenize 基础分词
  • PunktSentenceTokenizer 分句
  • TreebankWordTokenizer 标准
  • 正则分词 (RegexpTokenizer)
import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenize

text = "Alternative data drives alpha."
tokens = word_tokenize(text)
# ['Alternative', 'data', 'drives', 'alpha', '.']
特性Jieba (中文)NLTK (英文)
模式精确/全/搜索引擎punkt / treebank / 正则
自定义词典✅ 灵活添加需结合其他工具
词性标注内置 (jieba.posseg)nltk.pos_tag
金融领域可加载行业词典配合金融lexicon

📊 词频统计 & TF-IDF 特征工程核心

🔢 词频 (TF)

词在文档中出现次数 / 文档总词数。
反映词在文档内的重要性。

from collections import Counter
words = ['因子','挖掘','因子','数据']
freq = Counter(words)
# {'因子':2, '挖掘':1, '数据':1}

📉 逆文档频率 (IDF)

log(总文档数 / 包含该词文档数)。
降低常见词权重,提升稀有词。

import math
idf = math.log(N / df_word)
# N: 文档总数

⚖️ TF-IDF

TF × IDF = 词对文档的区分能力。
常用于关键词提取、文本相似度。

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = ["另类数据 因子", "文本 挖掘"]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
文档词项TFIDFTF-IDF
Doc1: 另类数据因子另类数据0.330.690.23
Doc1: 另类数据因子因子0.330.690.23
Doc2: 文本挖掘另类文本0.330.690.23
Doc2: 文本挖掘另类挖掘0.330.690.23

🧩 文本因子挖掘流程 另类数据流水线

📄 原始文本 ✂️ 分词 Jieba / NLTK 📊 TF-IDF 词频 · 权重 📈 因子 另类信号 预处理 → 分词 → 向量化 → 因子构建 停用词过滤 · 自定义词典 · 情感得分

🧰 实战技巧 另类因子挖掘

📌

金融词典

添加公司名、财务术语到Jieba自定义词典,提升分词准确率。
⚡

TF-IDF 变体

使用BM25、TF-RF等改进权重,适配短文本另类数据。
🧪

情感因子

基于情感词典或LSTM,从新闻/社交媒体提取情绪因子。