查看原文
其他

正则表达式 | 词频统计、情感分析、融资约束

大邓 大邓和他的Python
2024-09-09

一、统计某类词出现次数

import re

# 定义词语列表
word_list = ['融资''资金''筹资''投资''投入资金']

# 将词语列表转换为正则表达式模式
pattern = r'|'.join(word_list)

# 定义待匹配的中文文本
text = "今年公司的融资计划受到了资金压力的影响,筹资难度较大。"

# 使用 re.findall() 方法统计出现次数
count = len(re.findall(pattern, text))

# 打印结果
print(count)
3

注意:

使用正则表达式统计某类词的出现次数的效率取决于正则表达式的复杂度和文本的大小。对于较小的文本和简单的正则表达式,使用正则表达式可以提供一个简单的解决方案。但是对于较大的文本和复杂的正则表达式,可能会导致性能问题。

如果需要更快的实现方法,可以考虑使用字符串查找和替换函数,例如Python中的str.count()方法,该方法可以计算一个字符串中出现子字符串的次数。通过遍历所有需要查找的词汇并分别计算其出现次数,可以得出所有词汇的出现次数。这种方法可以避免正则表达式的匹配成本,并且通常比使用正则表达式更快。

# 定义词语列表
words = ['融资''资金''筹资''投资''投入资金']

# 定义待匹配的中文文本
text = "今年公司的融资计划受到了资金压力的影响,筹资难度较大。"

#words类词 出现次数
count = sum(text.count(word) for word in words)

二、 情感分析

正则表达式也可以用于情感分析。下面是一个使用正则表达式实现情感分析的示例代码:

  • 首先定义了一个包含积极情感词和消极情感词的列表。
  • 然后,使用正则表达式识别文本中出现的积极情感词和消极情感词,并计算它们出现的次数。
  • 最后,通过比较积极词和消极词的出现次数来确定情感分析结果。
import re

# 情感词列表,这里只列出了一些示例
positive_words = ['喜欢''赞''棒''好''美''赏心悦目']
negative_words = ['讨厌''踩''差''烂''丑''不满意']

# 使用正则表达式识别文本中的情感词
def sentiment_analysis(text):
    positive_count = len(re.findall(r'|'.join(positive_words), text))
    negative_count = len(re.findall(r'|'.join(negative_words), text))
    return positive_count - negative_count

# 测试示例
text1 = '我很喜欢这个餐厅,菜品棒极了!'
text2 = '这部电影很烂,演员演得太差了。'
text3 = '这个景点很美,值得去看看。'
text4 = '这家店的服务太差了,不满意。'
print(sentiment_analysis(text1))  # 输出 2
print(sentiment_analysis(text2))  # 输出 -2
print(sentiment_analysis(text3))  # 输出 1
print(sentiment_analysis(text4))  # 输出 -1
2
-2
1
-2
import re

nouns = ['GDP''CPI''PPI''利率''政策']
pos_adj = ['增长''提高''优化']
neg_adj = ['下降''降低''恶化']

def sentiment_analysis(text):
    score = 0
    for noun in nouns:
        matches = re.findall(noun, text)
        for match in matches:
            for adj in pos_adj:
                if adj in text:
                    score += 1
            for adj in neg_adj:
                if adj in text:
                    score -= 1
    return score

text = '中国GDP增长预期下调,影响市场情绪'
score = sentiment_analysis(text)
print(score)

1



三、融资约束

3.1 识别融资约束句子

姜付秀,王运通,田园,吴恺.多个大股东与企业融资约束——基于文本分析的经验证据[J].管理世界,2017,(12):61-74.

摘要: 本文采用文本分析方法构建了融资约束指标,在此基础上,实证检验了多个大股东对企业融资约束的影响以及相应的作用机理。我们发现,多个大股东的公司有着较低的融资约束水平。该结论在控制内生性情况下依然成立。中介效应模型的检验结果表明,其他大股东通过抑制控股股东的掏空行为降低了企业融资约束。进一步的研究结果表明,在其他大股东具有较强的监督动机和监督能力(大股东数量更多、持股数量之和更大、大股东之间不容易合谋)、及更好的外部环境(信息环境、法律环境)时,公司的融资约束水平更低,这些发现在逻辑上为其他大股东的监督假说提供证据支持的同时,也表明大股东发挥监督作用降低企业融资约束需要一定条件。本文为完善中国情景下的融资约束指标构建、更好度量中国企业融资约束提供了有益参考;同时,为股权结构安排的经济后果提供了新的证据支持。

import re

# 融资不足情况:
regex1 = r"(?:融资|资金|筹资)[^。]{0,6}?(?:难以|不能|无法|不足以)[^。]*"
# 融资成本或压力过大情况:
regex2 = r"(?:融资|资金|筹资)[^。]{0,6}?(?:成本|压力|难度)[^。]{0,4}?(?:升|增|高|大)[^。]*"
# 使用“或”运算符, 将这些正则表达式组合成一个大的正则表达式
pattern = r"(" + regex1 + r")|(" + regex2 + r")"

text = "这是一段融资方面的文本,其中提到了资金不足的情况,还提到了融资成本过高的问题。"

matches = re.findall(pattern, text)
print(matches)
[('', '融资成本过高的问题')]

3.2 出现融资约束句子的数量

pattern可以应用的A股上市公司md&a部分的融资压力句子的识别,其实稍微改动就可以测量md&a中企业关于融资压力句子的出现次数。

import re


def finance_constrain(text):
    # 融资不足情况:
    regex1 = r"(?:融资|资金|筹资)[^。]{0,6}?(?:难以|不能|无法|不足以)[^。]*"
    # 融资成本或压力过大情况:
    regex2 = r"(?:融资|资金|筹资)[^。]{0,6}?(?:成本|压力|难度)[^。]{0,4}?(?:升|增|高|大)[^。]*"
    # 使用“或”运算符, 将这些正则表达式组合成一个大的正则表达式
    pattern = r"(" + regex1 + r")|(" + regex2 + r")"


    # 将 pattern 编译成正则表达式对象
    regex = re.compile(pattern)


    count = 0
    for line in f:
        match = regex.findall(line)
        count += len(match)

    return count



精选文章

管理世界 | 使用文本分析词构建并测量短视主义

管理世界 | 使用 「经营讨论与分析」 测量 「企业数字化指标」

管理世界 | 用正则表达式、文本向量化、线性回归算法从md&a数据中计算 「企业融资约束指标」

支持开票 | Python实证指标构建与文本分析

PNAS | 文本网络分析&文化桥梁Python代码实现

PNAS | 使用语义距离测量一个人的「创新力(发散思维)得分

MS | 使用网络算法识别『创新的颠覆性与否

金融研究 | 文本相似度计算与可视化

金融研究 | 使用Python构建「关键审计事项信息含量」

转载 | 大数据时代的「计算文化心理学」

视频分享 | 文本分析在经管研究中的应用

转载 | 金融学文本大数据挖掘方法与研究进展

文本分析 | 「MD&A信息含量」指标构建代码实现

长期征稿 | 欢迎各位前来投稿

17G数据集 | 深交所企业社会责任报告

70G数据集 | 上市公司定期报告数据集

27G数据集 | 使用Python对27G招股说明书进行文本分析

数据集 | 585w企业工商注册信息

数据集 | 90w条中国上市「公司高管数据

可视化 | 绘制《三体》人物关系网络图

认知的测量 | 向量距离vs语义投影

tomotopy | 速度最快的LDA主题模型

安装python包出现报错:Microsoft Visual 14.0 or greater is required. 怎么办?

如何正确读入文本数据不乱码(解决文本乱码问题)

使用R语言绘制文本数据情感历时趋势图

pandas | 使用 df.query 字符串表达式进行数据筛选

使用 chatGPT 做词频统计&词云图

使用 chatGPT 撰写 Python 文本分析代码

数据清洗 | 借助 chatGPT 设计正则表达式


继续滑动看下一个
大邓和他的Python
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存