💡 文本因子挖掘:从公告、新闻、社交媒体中提取情绪、注意力、不确定性等信号。
import jieba
# 精确模式
words = jieba.lcut("量化因子挖掘关注另类数据")
# ['量化', '因子', '挖掘', '关注', '另类', '数据']
# 添加自定义词
jieba.add_word("另类数据")
words = jieba.lcut("另类数据因子挖掘")
# ['另类数据', '因子', '挖掘']
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 |
词在文档中出现次数 / 文档总词数。
反映词在文档内的重要性。
from collections import Counter
words = ['因子','挖掘','因子','数据']
freq = Counter(words)
# {'因子':2, '挖掘':1, '数据':1}
log(总文档数 / 包含该词文档数)。
降低常见词权重,提升稀有词。
import math idf = math.log(N / df_word) # N: 文档总数
TF × IDF = 词对文档的区分能力。
常用于关键词提取、文本相似度。
from sklearn.feature_extraction.text import TfidfVectorizer corpus = ["另类数据 因子", "文本 挖掘"] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(corpus)
| 文档 | 词项 | TF | IDF | TF-IDF |
|---|---|---|---|---|
| Doc1: 另类数据因子 | 另类数据 | 0.33 | 0.69 | 0.23 |
| Doc1: 另类数据因子 | 因子 | 0.33 | 0.69 | 0.23 |
| Doc2: 文本挖掘另类 | 文本 | 0.33 | 0.69 | 0.23 |
| Doc2: 文本挖掘另类 | 挖掘 | 0.33 | 0.69 | 0.23 |
金融词典
添加公司名、财务术语到Jieba自定义词典,提升分词准确率。TF-IDF 变体
使用BM25、TF-RF等改进权重,适配短文本另类数据。情感因子
基于情感词典或LSTM,从新闻/社交媒体提取情绪因子。