# 基于Python和PyQt5库实现的面向英文文献的编辑与检索
# 1 分析
## 1.1 需要完成的功能
### 1.1.1 基本要求
- 设计图形界面,可以实现英文文章的编辑与检索功能
- 编辑过程包括:
- 创建新文件;打开文件;保存文件
- 查找:输入单词在当前打开的文档中进行查找,并将结果显示在界面中
- 替换:将文章中给定的单词替换为另外一个单词,再存盘等
- 对于给定的文章片段(30<单词数量<100),统计该片段中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。在 图形界面中演示该过程
- 对于给定的多篇文章构成的文档集中,统计不同词汇的出现频率,并进行排序,在界面中显示 TOP 20 的排序结果
- 对于给定的多篇文章构成的文档集中,建立倒排索引,实现按照关键词的检索,并在界面中显示检索的结果(如:关键词出现的文档编号以及所在的句子片段,可以将关键词高亮显示)
### 1.1.2 扩展要求
- 界面设计的优化
- 对于编码与译码过程,可以自行设计其他算法
- 扩展检索:例如,可以实现多于 1 个关键词的联合检索,要求检索结果中同时出现所有的关键词
- 优化检索,对于检索结果的相关性排序,例如:包含关键词的数量等信息为依据
- 可以自行根据本题目程序的实际应用情况,扩展功能
## 1.2 需要处理的数据
### 1.2.1 英文文本
多个 txt 文档的导入,主要是文件路径,然后对文档中的内容进行处理。 首先读取文本。然后统计单词、字符的频率以及位置,生成索引;或者直接进行查找等功能。
### 1.2.2 用户输入的字符串
有多个功能需要用户输入字符串,比如创建新的文档需要命名、搜索单词、修改文档、 在文档中替换内容。
### 1.2.3 网络爬取的信息
从网站上爬取单词翻译信息,包括 HTML 页面。
### 1.2.4 选择的文档信息
用户通过“导入文件”,通过窗口选择并导入文档。
## 1.3 程序开发运行选用的环境
- **操作系统**
- 版次:Windows 10 家庭中文版
- 版本:1709 OS
- 内部版本:16299.125
- **语言**
- Python 3.6.3
- **库**
- PyQt5==5.9.2
- bs4==0.0.1
- six==1.11.0
- requests==2.18.4
## 1.4 用户界面的设计
使用 PyQt5 库设计用户界面;主要窗口及功能如下: main:进入程序的 MainWindow,用来导入文件、搜索关键字等。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/319c11c02e3d85ea345cbd3ffc838962.writebug)
item:从 main 进入。主体为显示文章的文本框,同时有多个功能按钮。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/2fbe081a64e62e6cc1c0492ce3c471c8.writebug)
## 1.5 主要流程图
![](http://www.writebug.com/myres/static/uploads/2021/10/19/6cbdabc8b300a9cbc490374aea5bdcd0.writebug)
# 2 数据结构设计
## 2.1 所定义主要的数据结构
### 2.1.1 Python 内置结构
- **list**
进行列表建立,以及一些需要排序的操作,其他大部分数据结构无法排序,需要先转化成 list,做排序再考虑转化回去(较麻烦),或者直接进行操作。用[]表示 。
- **dict**
进行词典建立,使用键-值(key-value)存储,具有极快的查找速度,用于在不同目录下查找文本,不同文本下查找单词位置的功能,用牺牲空间的方式加快查找速度。用{}表 示。
- **tuple**
与列表一样,也是一种序列,唯一不同的是元组不能被修改。用()表示。
### 2.1.2 哈夫曼树
给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
本次构建的哈夫曼树的权值是文章中出现的所有字符的频率。并由此生成每个字符的编 码,频率越高,其叶子结点距根越近,对应的编码也就越短。
### 2.1.3 索引结构
构建的索引,用来更快更方便的搜索单词或统计频率。利用 Python 本身的 dict, list 以及 tuple 建立索引,结构如下:
```json
[(文件地址 1, [{'word': 单词 1, 'pos': [位置下标]}, {'word': 单词 2, 'pos': [位置下 标…]},…]), (文件地址 2, [{'word': 单词 1, 'pos': [位置下标]} , {'word': 单词 2, 'pos': [位置下 标…]},…]),…]
```
## 2.2 程序整体结构以及各模块的功能描述
- main.py:总的 main 启动文件
- img.py:资源文件。图片转为文本格式,以便于程序的封装
- KMP.py
- def get_next(p):寻找前缀后缀最长公共元素长度,计算字符串 p 的 next 表
- def kmp(s, p):核心计算函数,返回字符串 p 的位置下标
- def positions(string, pattern):查找 pattern 在 string 所有的出现位置的起始下标
- def count(string, pattern):计算 pattern 在 string 的出现次数
- Huffman.py
- class Node:
- def \_\_init\_\_(self, freq):初始化属性 left, right, father, freq
- def isLeft(self):返回该节点是否是父节点的左节点
- def create_Nodes(freqs):根据频率表创建叶子结点
- def create_Huffman_Tree(nodes):根据频率大小,使用队列创建哈夫曼树
- def Huffman_Encoding(nodes, root):用哈夫曼树生成哈夫曼对照表
- def cal_count_freq(content):计算字符频率
- def cal_Huffman_codes(char_freqs):整合上述 functions
- File.py
- def search(files, keyword):用 KMP 算法搜索计算所有传入的文件中 keyword 的数量,返回有序的文件及数量列表
- def cal_words_freq(files, reverse=True):用 KMP 算法搜索计算所有传入的文件中所有单词各自的数量,返回有序的文件及单词列表及数量
- def cal_words_freq(files, reverse=True):用 KMP 算法搜索计算所有传入的文件中所有单词各自的数量,返回有序的文件及单词列表及位置
- class File:
- def \_\_init\_\_(self, file_pos):初始化函数,传入文件路径作为属性
- def get_content(self):获得文件内容
- def set_content(self, content):将文件内容修改为 content
- def get_huffman_codes(self):统计文件内容中 word 出现的次数
- def get_huffman_codes(self):获得哈夫曼编码表
- def get_encodeStr(self):获得文件内容通过哈夫曼编码表编码后的字符串
- def get_decodeStr(self, huffmanStr):通过哈夫曼编码表将编码转换成原字 符串
- SplashScreen.py
- class SplashScreen:
- def \_\_init\_\_(self):继承 PyQt5.QtWidgets.QSplashScreen
- def effect(self):启动页的渐隐渐出特效
- main_UI.py
- class UI:
- def \_\_init\_\_(self):构造函数,将属性 search_status 和 freqs 初始化
- def init(self):设置事件触发
- def add_files(self):调用 PyQt5 的 FileDialog 选择要添加的文件
- def about(self):“关于”窗口
- def create_file(self):创建文本文档,并添加文件
- def cal_words_freqs(self):使用索引,统计词频并生成显示降序列表
- def load_package(self):读取索引
- def packaging(self):生成索引文件。使用 six 库中 pickle 打包成二进制文件
- def clear_list(self):清空文件列表
- def get_research_content(self):获得用户输入的需要检索的内容
- def get_files_from_table(self):获得当前文件列表
- def creat_tableWidget(self, files, nums=[], poss=[]):在 GUI 中生成列表及相关信息
- def closeEvent(self, event):窗口关闭时出发的关闭事件
- def search(self):根据索引查找多个单词或词组,�
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python和PyQt5库实现的面向英文文献的编辑与检索系统 毕业设计附代码.rar
共235个文件
txt:201个
py:23个
ui:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 24 浏览量
2023-02-06
19:53:38
上传
评论 1
收藏 1.28MB RAR 举报
温馨提示
基本要求 设计图形界面,可以实现英文文章的编辑与检索功能 编辑过程包括: 创建新文件;打开文件;保存文件 查找:输入单词在当前打开的文档中进行查找,并将结果显示在界面中 替换:将文章中给定的单词替换为另外一个单词,再存盘等 对于给定的文章片段(30<单词数量<100),统计该片段中每个字符出现的次数,然后以它们作为权值,对每一个字符进行编码,编码完成后再对其编码进行译码。在 图形界面中演示该过程 对于给定的多篇文章构成的文档集中,统计不同词汇的出现频率,并进行排序,在界面中显示 TOP 20 的排序结果 对于给定的多篇文章构成的文档集中,建立倒排索引,实现按照关键词的检索,并在界面中显示检索的结果(如:关键词出现的文档编号以及所在的句子片段,可以将关键词高亮显示) 1.1.2 扩展要求 界面设计的优化 对于编码与译码过程,可以自行设计其他算法 扩展检索:例如,可以实现多于 1 个关键词的联合检索,要求检索结果中同时出现所有的关键词 优化检索,对于检索结果的相关性排序,例如:包含关键词的数量等信息为依据 可以自行根据本题目程序的实际应用情况,扩展功能 1.2 需要处理
资源推荐
资源详情
资源评论
收起资源包目录
基于Python和PyQt5库实现的面向英文文献的编辑与检索系统 毕业设计附代码.rar (235个子文件)
LICENSE 1KB
README.md 14KB
基于Python和PyQt5库实现的面向英文文献的编辑与检索.pdf 1.27MB
img.py 378KB
main_UI.py 9KB
item_UI.py 5KB
main_GUI.py 5KB
File.py 4KB
item_GUI.py 3KB
search_UI.py 3KB
search_GUI.py 3KB
about_GUI.py 2KB
create_file_GUI.py 2KB
file_UI.py 2KB
Huffman.py 2KB
progressbar_GUI.py 1KB
huffman_GUI.py 1KB
huffman_UI.py 1KB
freq_UI.py 1KB
progressbar_UI.py 1KB
KMP.py 1KB
freq_GUI.py 998B
SplashScreen.py 791B
about_UI.py 490B
create_file_UI.py 351B
main.py 261B
153_1.txt 6KB
186_1.txt 5KB
110_1.txt 5KB
35_3.txt 5KB
85_2.txt 5KB
135_4.txt 5KB
58_3.txt 4KB
130_1.txt 4KB
47_2.txt 4KB
174_3.txt 3KB
145_2.txt 3KB
32_3.txt 3KB
29_4.txt 3KB
40_3.txt 3KB
185_4.txt 3KB
165_4.txt 3KB
15_1.txt 3KB
119_4.txt 3KB
83_3.txt 3KB
72_4.txt 3KB
75_1.txt 3KB
170_1.txt 3KB
16_3.txt 2KB
137_4.txt 2KB
180_4.txt 2KB
53_3.txt 2KB
93_1.txt 2KB
148_2.txt 2KB
113_4.txt 2KB
98_1.txt 2KB
45_2.txt 2KB
12_1.txt 2KB
62_2.txt 2KB
104_3.txt 2KB
64_1.txt 2KB
38_2.txt 2KB
48_4.txt 2KB
3_4.txt 2KB
123_1.txt 2KB
136_4.txt 2KB
7_3.txt 2KB
152_4.txt 2KB
120_1.txt 2KB
156_1.txt 2KB
168_1.txt 2KB
127_4.txt 2KB
42_3.txt 2KB
61_3.txt 2KB
73_1.txt 2KB
90_4.txt 2KB
39_2.txt 2KB
71_1.txt 1KB
22_1.txt 1KB
117_3.txt 1KB
43_4.txt 1KB
37_3.txt 1KB
41_1.txt 1KB
25_1.txt 1KB
74_3.txt 1KB
101_1.txt 1KB
144_2.txt 1KB
126_1.txt 1KB
134_2.txt 1KB
99_1.txt 1KB
24_1.txt 1KB
21_4.txt 1KB
118_2.txt 1KB
57_4.txt 1KB
198_2.txt 1KB
89_2.txt 1KB
166_1.txt 1KB
67_2.txt 1KB
84_3.txt 1KB
192_2.txt 1KB
共 235 条
- 1
- 2
- 3
资源评论
- weixin_498637652023-03-09怎么能有这么好的资源!只能用感激涕零来形容TAT...
- hjijingzijimogon2023-03-31终于找到了超赞的宝藏资源,果断冲冲冲,支持!
甜辣uu
- 粉丝: 8384
- 资源: 1103
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功