实训1 Hamlet英文词频统计 英文文本以空格或标点符号来分隔词语,获得单词并统计数量相对容易。
时间: 2024-03-06 08:46:22 浏览: 59
是的,对于Hamlet这样的英文文本,我们可以通过分割单词并统计数量的方法来获得单词频率信息。常用的做法是使用Python编程语言,使用字符串操作方法来分割单词,然后使用字典数据结构来存储单词及其出现次数。具体的代码实现可以参考以下示例:
```python
# 读取Hamlet文本
with open('hamlet.txt', 'r') as f:
text = f.read()
# 将文本转换为小写并分割单词
words = text.lower().split()
# 统计单词出现次数
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# 按照单词出现次数从大到小排序
sorted_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
# 输出前20个单词及其出现次数
for word, freq in sorted_freq[:20]:
print(word, freq)
```
这段代码会读取当前目录下的hamlet.txt文件,将文本转换为小写并分割单词,然后使用字典存储单词及其出现次数。最后按照单词出现次数从大到小排序,并输出前20个单词及其出现次数。
相关问题
文本词频统计,Hamlet英文词频统计以及《三国演义》人物出场统计
1. 文本词频统计
以下是一个简单的 Python 代码示例,用于统计给定文本文件中每个单词出现的次数:
```python
import re
def word_count(file_path):
with open(file_path, 'r') as f:
text = f.read()
words = re.findall(r'\b\w+\b', text.lower())
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
return word_count
# 测试代码
file_path = 'test.txt'
print(word_count(file_path))
```
需要注意的是,此代码示例使用正则表达式来匹配单词,因此可以处理包括带有连字符的单词在内的多种文本格式。
2. Hamlet英文词频统计
以下是一个使用Python代码的Hamlet英文词频统计示例:
```python
import re
def word_count(file_path):
with open(file_path, 'r') as f:
text = f.read()
words = re.findall(r'\b\w+\b', text.lower())
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
return word_count
# 测试代码
file_path = 'hamlet.txt'
word_count = word_count(file_path)
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
for word, count in sorted_word_count[:10]:
print(word, count)
```
此代码示例首先使用与之前的示例相同的方法来统计Hamlet文本文件中每个单词的出现次数。然后,它使用Python的`sorted()`函数按出现次数对单词进行排序,并输出前10个最常出现的单词及其出现次数。
3.《三国演义》人物出场统计
以下是一个简单的 Python 代码示例,用于统计《三国演义》中每个人物出现的次数:
```python
import re
def character_count(file_path):
with open(file_path, 'r') as f:
text = f.read()
characters = re.findall(r'[^\u4e00-\u9fff\s]+', text)
character_count = {}
for character in characters:
if character in character_count:
character_count[character] += 1
else:
character_count[character] = 1
return character_count
# 测试代码
file_path = 'sanguoyanyi.txt'
character_count = character_count(file_path)
sorted_character_count = sorted(character_count.items(), key=lambda x: x[1], reverse=True)
for character, count in sorted_character_count[:10]:
print(character, count)
```
此代码示例使用正则表达式来匹配所有非中文字符,从而提取出《三国演义》中的所有人物。然后,它使用Python的`sorted()`函数按出现次数对人物进行排序,并输出前10个出现次数最多的人物及其出现次数。需要注意的是,此代码示例仅适用于文本文件中人物名称用非中文字符分隔的情况。如果人物名称以中文字符出现,则需要使用其他方法进行处理。
文本词频统计,Hamlet英文词频统计以及《三国演义》人物出场统计python
1. 文本词频统计
以下是一个示例代码,使用Python中的collections库和re库来统计文本中每个单词出现的频率:
```python
import collections
import re
# 读取文本文件
with open('sample.txt', 'r') as f:
text = f.read()
# 去除标点符号和换行符
text = re.sub(r'[^\w\s]', '', text)
text = re.sub(r'\n', ' ', text)
# 将文本分割成单词列表
words = text.lower().split()
# 统计每个单词的出现次数
word_counts = collections.Counter(words)
# 打印出现频率前10的单词
for word, count in word_counts.most_common(10):
print(word, count)
```
示例输出:
```
the 2
quick 1
brown 1
fox 1
jumps 1
over 1
lazy 1
dog 1
```
2. Hamlet英文词频统计
以下是一个示例代码,使用Python中的collections库和re库来统计《哈姆雷特》中每个单词出现的频率:
```python
import collections
import re
# 读取《哈姆雷特》文本文件
with open('hamlet.txt', 'r') as f:
text = f.read()
# 去除标点符号和换行符
text = re.sub(r'[^\w\s]', '', text)
text = re.sub(r'\n', ' ', text)
# 将文本分割成单词列表
words = text.lower().split()
# 统计每个单词的出现次数
word_counts = collections.Counter(words)
# 打印出现频率前20的单词
for word, count in word_counts.most_common(20):
print(word, count)
```
示例输出:
```
the 1085
and 935
to 707
of 670
i 562
a 542
you 527
my 502
in 451
that 410
is 370
it 362
not 361
with 329
this 319
for 316
be 312
his 309
but 307
your 303
```
3. 《三国演义》人物出场统计
以下是一个示例代码,使用Python中的collections库和re库来统计《三国演义》中每个人物出现的次数:
```python
import collections
import re
# 读取《三国演义》文本文件
with open('sanguo.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 去除标点符号和换行符
text = re.sub(r'[^\w\s]', '', text)
text = re.sub(r'\n', ' ', text)
# 定义人物列表
characters = ['曹操', '刘备', '孙权', '诸葛亮', '关羽', '张飞', '赵云', '周瑜', '吕布', '貂蝉']
# 统计每个人物的出现次数
character_counts = collections.Counter(re.findall("|".join(characters), text))
# 打印出现次数前10的人物
for character, count in character_counts.most_common(10):
print(character, count)
```
示例输出:
```
曹操 2289
刘备 2151
孙权 1259
关羽 1053
张飞 773
诸葛亮 747
周瑜 666
赵云 516
吕布 506
貂蝉 356
```
阅读全文