### Python统计文本字符串里单词出现频率的方法
在Python编程中,统计文本字符串中单词出现的频率是一项非常实用的功能,尤其在自然语言处理、文本分析等领域有着广泛的应用。本文将详细介绍如何利用Python来实现这一功能,并深入探讨其中涉及到的字符串操作技巧。
#### 一、背景介绍与需求分析
在进行文本数据处理时,经常需要了解文档中各单词出现的频次,这对于后续的数据分析或挖掘具有重要意义。例如,在情感分析中,高频词汇往往能更好地反映文档的情感倾向;在主题模型中,词频统计是构建词袋模型的基础。因此,掌握高效地统计文本中单词频率的方法是非常重要的。
#### 二、基本思路与步骤
为了统计文本字符串中单词出现的频率,我们可以通过以下步骤来实现:
1. **读取原始文本**:首先需要有一个包含文本的字符串。
2. **分割单词**:将原始文本按照空格等分隔符拆分成单词列表。
3. **清洗数据**:去除每个单词末尾的标点符号,并将所有单词转换为小写形式。
4. **统计频率**:使用Python内置的字典类型来统计每个单词出现的次数。
5. **展示结果**:将统计结果按字母顺序排序后输出。
#### 三、代码实现详解
下面是一段具体的Python代码示例,用于演示上述过程:
```python
# word frequency in a text
# tested with Python 2.4 vegaseat 25 aug 2005
# Chinese wisdom
str1 = """Man who run in front of car, get tired.
Man who run behind car, get exhausted."""
print("Original string:")
print(str1)
print()
# 创建一个单词列表,按照空格分割
wordList1 = str1.split(None)
# 清洗数据:去除标点符号并转换为小写
wordList2 = []
for word1 in wordList1:
# 获取单词的最后一个字符
lastchar = word1[-1:]
# 定义标点符号列表
if lastchar in [",", ".", "!", "?", ";"]:
# 去除标点符号
word2 = word1.rstrip(lastchar)
else:
word2 = word1
# 将处理后的单词添加到列表中,并转换为小写
wordList2.append(word2.lower())
print("Word list created from modified string:")
print(wordList2)
print()
# 创建一个字典用于统计词频
freqD2 = {}
for word2 in wordList2:
freqD2[word2] = freqD2.get(word2, 0) + 1
# 对词频字典的键进行排序
keyList = freqD2.keys()
keyList.sort()
print("Frequency of each word in the word list (sorted):")
for key2 in keyList:
print("%-10s%d" % (key2, freqD2[key2]))
```
#### 四、关键代码解析
1. **字符串分割**:`str1.split(None)` 是将字符串 `str1` 按照空格进行分割,得到一个单词列表 `wordList1`。
2. **去除标点符号**:通过检查每个单词的最后一个字符是否属于标点符号列表 `[",", ".", "!", "?", ";"]` 来判断是否需要去除。
3. **转换为小写**:使用 `word2.lower()` 将单词转换为小写形式,确保统计时不区分大小写。
4. **统计词频**:使用字典 `freqD2` 来记录每个单词出现的次数。这里使用了 `get` 方法,如果字典中不存在该键,则返回默认值 `0`。
5. **排序与输出**:将词频字典的键进行排序,并输出每个单词及其出现的次数。
#### 五、总结
本文通过一个具体的示例详细介绍了如何使用Python统计文本字符串中单词的出现频率。这种方法简单有效,适用于多种场景下的文本数据分析工作。希望本文所述对大家的Python程序设计有所帮助。