PTA:7-44 基于词频的文件相似度 (30 分)

该博客介绍了如何计算两个文件的相似度,通过比较它们的公共词汇占总词汇的比例。问题简化为只考虑长度3至10的英文单词,不区分大小写。输入包含多个文件内容和查询对,输出为相似度百分比。
摘要由CSDN通过智能技术生成

7-44 基于词频的文件相似度 (30 分)

实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。
输入格式:

输入首先给出正整数N(≤100),为文件总数。随后按以下格式给出每个文件的内容:首先给出文件正文,最后在一行中只给出一个字符#,表示文件结束。在N个文件内容结束之后,给出查询总数M(≤10​的四次方​​ ),随后M行,每行给出一对文件编号,其间以空格分隔。这里假设文件按给出的顺序从1到N编号。
输出格式:

针对每一条查询,在一行中输出两文件的相似度,即两文件的公共词汇量占两文件总词汇量的百分比,精确到小数点后1位。注意这里的一个“单词”只包括仅由英文字母组成的、长度不小于3、且不超过10的英文单词,长度超过10的只考虑前10个字母。单词间以任何非英文字母隔开。另外,大小写不同的同一单词被认为是相同的单词,例如“You”和“you”是同一个单词。
输入样例:

3
Aaa Bbb Ccc
#
Bbb Ccc Ddd
#
Aaa2 ccc Eee
is at Ddd@Fff
#
2
1 2
1 3

输出样例:

50.0%
33.3%

具体思路见代码

//使用字符接收每一输入字符,当字符不为英语字母时,用string复制字符数组中的字符,直至输入#结束
//使用vect
1 创建L4 1项目 2 给定一个存放了三段文章的字符串数组 点击 “文件显示”按钮 将第一段文章内容显示在文本框中 再次点击“文件显示”按钮 将第二段文章显示在文本框中 以此类推 filestr[0] "Singles Day in China is the celebration or mourning of being unattached Started by students in Nanjing in the mid 1990s the date was selected in observation of its four solitary digits "; filestr[1] "While relatively obscure in most other countries Singles Day is likely to increase in prominence as more single men in China are unable to find female partners According to a recent study by the Chinese Academy of Social Sciences more than 24 million Chinese men could find themselves without spouses by 2020 "; filestr[2] "Celebrating Singles Day comes in many forms across the Asian nation and like Christmas and Valentine"s Day it has become a multi million dollar industry "; 注意:利用给定文章或者自选文章都可以 注意我们只讨论简单的情况 文章中只有逗号和句号两种特殊符号 2 点击“词频统计”按钮 系统将文本框中的字符串包括的单词及其个数统计出来 如图2所示 提示1:文章需要经过若干次处理 大小写处理 替换特殊符号处理 隔单词处理 提示2:利用hashtable进行统计 单词作为key 个数作为value foreach string i in strword if ht Contains i ht Add i 1 ; else ht[i] int ht[i] + 1; 提示3:格式化输出统计结果 string str string Format "{0 15} {1 3}" de Key de Value ; txtFile Text txtFile Text +str + " r n";">1 创建L4 1项目 2 给定一个存放了三段文章的字符串数组 点击 “文件显示”按钮 将第一段文章内容显示在文本框中 再次点击“文件显示”按钮 将第二段文章显示在文本框中 以此类推 filestr[0] "Singles Day in China is [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值