首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C++ STL库统计一散文中单词出现次数行号

在开发过程中经常会遇到文件处理的情形,例如统计一篇文章单词的数量、行数、出现频率最高的几个单词等等。这篇文章主要通过C++来解析一篇文章,实现每个单词(不区分大小写)出现的总次数出现的行号的统计。...下面的代码主要是使用C++的STL库解析一篇英文散文(网上看到不错就wget下来了),涉及的编程基本点如下: 1、STL容器中的mapvector容器; 2、ifstream库文件流的操作; 3、string...的分割查找find、获取子串substr、去除非法字符等待; 4、c++中的基本知识点:构造函数(包括常量的初始化)、引用、对象的构造析构等等。...HandleWord( s_word ); break; } /** 避免空格,也可以使用下面这两行来去掉行首行尾的空格...另外,上面C++程序中的数据处理函数HandleUnkind相对比较粗略:只简单过滤了非数字字母的字符。

11110
您找到你想要的搜索结果了吗?
是的
没有找到

解决AttributeError: collections.defaultdict object has no attribute iteritems

解决方案二:使用​​​dict()​​函数 另外一个解决方案是使用​​dict()​​函数来转换​​collections.defaultdict​​对象为普通的字典对象,然后再使用​​iteritems​​..., value)通过使用​​dict()​​函数,我们将​​collections.defaultdict​​对象转换为常规字典,然后使用​​iteritems​​方法进行遍历。...)# 读取文件,统计单词出现的次数with open('sample.txt', 'r') as file: for line in file: words = line.split...(): print(word, count)以上代码中,我们首先创建了一个​​defaultdict(int)​​对象,用于统计单词的出现次数。...然后,通过读取文件的每一行,使用​​split()​​方法将行拆分为单词列表。我们使用​​count_dict[word] += 1​​将每个单词的计数加1。

32210

两句话中的不常见单词(#Day24)

两句话中的不常见单词 某个单词在其中一个句子中出现一次,在另一个句子中没有出现,那么我们可以将两个句子的单词合并,统计每个单词出现的次数,次数为1的即为只出现一次的不常见单词。...这个思路可以用哈希表实现,key记录单词,value记录出现次数: def hash_solution(s1: str, s2: str) -> List[str]: s = s1.split(...) + s2.split() hash_dic = defaultdict(int) res = [] for i in s: hash_dic[i] += 1...sweet" s2 = "this apple is sour" print(hash_solution(s1, s2)) # ['sweet', 'sour'] 相同的思路也可以直接用python的库函数...() return [i for i in s if s.count(i) == 1] 对于哈希表的解法是需要先存好,然后再遍历,为了简化书写可以使用海象表达式来实现(海象符要放在括号里):

14130

Python基础:输入与输出(IO)

来做一个NLP任务   步骤为:     1.读取文件;     2.去除所有标点符号换行符,并把所有大写变成小写;     3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序;     ...代码: import re import os,sys # 你不用太关心这个函数 def parse(text):   # 使用正则表达式去除标点符号换行符   text = re.sub(r'[^\...  word_list = filter(None, word_list)   # 生成单词词频的字典   word_cnt = {}   for word in word_list:     if...(int) #defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值 for line in f: #逐行读取   line =re.sub(r...'[^\w ]', '', line) #使用正则表达式去除标点符号换行符   for word in filter(None, line.split(' ')): #按空格把单词分组,并把空白单词去掉

61020

python 脚本学习(一)

这里先讲下collections模块的defaultdict dict 这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,...笔者的理解: defaultdict接受一个工厂函数作为参数,这个传入的工厂函数的类型,决定了该字典对象中keys的类型值的类型。...比如 defaultdict(set)这里传入了一个set类型,这表示其中的keys为集合,要在key中加入数据则要使用集合的内置add方法,对应的value也会符合集合的特点,无序性,唯一性。...如果 defaultdict(list) 这里传入了一个list类型,这表示其中的keys为列表,要在key中加入数据则要使用列表的内置方法append,对应的value也会符合列表的特点,有序性,可重复...从一篇英文文章中统计出频率出现最高的10个单词 代码实例: #!

1.2K10

贝叶斯推断及其互联网应用(三):拼写检查

使用Google的时候,如果你拼错一个单词,它会提醒你正确的拼法。 比如,你不小心输入了seperate。 Google告诉你,这个词是不存在的,正确的拼法是separate。...有好几种方法可以实现这个功能,Google使用的是基于贝叶斯推断的统计学方法。这种方法的特点就是快,很短的时间内处理大量文本,并且有很高的精确度(90%以上)。...这需要统计数据的支持,但是为了简化问题,我们假设两个单词在字形上越接近,就有越可能拼错,P(w|C)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率更高。...第二步,取出文本库的每一个单词统计它们的出现频率。 第三步,根据用户输入的单词,得到其所有可能的拼写相近的形式。...第五步,使用words()train()函数,生成上一步的"词频字典",放入变量NWORDS。

1.6K130

python字符串检索统计函数使用方法

先看看构造函数 def find(self, sub, start=None, end=None): # real signature unknown; restored from __doc__ "...Traceback (most recent call last): File "C:/Users/Administrator/Desktop/python知识总结/python基础/7-3.字符串检测统计函数...() 这两个函数分别永凯检测一个字符串是以什么字符开头结尾的,返回值是bool类型。...web.endswith('n'))print(web.startswith('a'))print(web.endswith('a')) 返回结果如下: True True False False 二、统计函数...', 7)) # 从第八个字符查找字符串中有几个点 返回结果: 2 1 0 1 以上就是对字符串检测统计函数的介绍,如果有不懂的地方可以去python自学网查看关于这个知识点的相关python基础视频学习

70520

BPE算法详解

如果我们能使用将一个token分成多个subtokens,上面的问题就能很好的解决。...BPE算法通过训练,能够把上面的3个单词拆分成["lov","ed","ing","es"]几部分,这样可以把词的本身的意思时态分开,有效的减少了词表的数量。...算法流程如下: 设定最大subwords个数$V$ 将所有单词拆分为单个字符,并在最后添加一个停止符,同时标记出该单词出现的次数。...例如,"low"这个单词出现了5次,那么它将会被处理为{'l o w ': 5} 统计每一个连续字节对的出现频率,选择最高频者合并成新的subword 重复第3步直到达到第1步设定的subwords...编码时,对于每个单词,遍历排好序的子词词表寻找是否有token是当前单词的子字符串,如果有,则该token是表示单词的tokens之一 我们从最长的token迭代到最短的token,尝试将每个单词中的子字符串替换为

2.8K31

python实现拼写检查器21行轻松搞定

,下面分析具体代码实现 代码分析 利用words()函数提取big.txt中的单词 def words(text): return re.findall('[a-z]+', text.lower())...text.lower()是将文本转化为小写字母,也就是“the”“The”一样定义为同一个单词。...利用train()函数计算每个单词出现的次数然后训练出一个合适的模型 def train(features): model = collections.defaultdict(lambda: 1) for...下面的函数返回一个将c进行一次编辑所有可能得到的单词w的集合: def edits1(word): splits = [(word[:i], word[i:]) for i in range(len...下面通过correct函数先选择编辑距离最小的单词,其对应的P(w|c)就会越大,作为候选单词,再选择P(c)最大的那个单词作为拼写建议 def correct(word): candidates =

1.3K40

Python | 21行轻松搞定拼写检查器

,下面分析具体代码实现 代码分析 利用words()函数提取big.txt中的单词 def words(text): return re.findall('[a-z]+', text.lower...text.lower()是将文本转化为小写字母,也就是“the”“The”一样定义为同一个单词。...利用train()函数计算每个单词出现的次数然后训练出一个合适的模型 def train(features): model = collections.defaultdict(lambda: 1...下面的函数返回一个将c进行一次编辑所有可能得到的单词w的集合: def edits1(word): splits = [(word[:i], word[i:]) for i in range(len...下面通过correct函数先选择编辑距离最小的单词,其对应的P(w|c)就会越大,作为候选单词,再选择P(c)最大的那个单词作为拼写建议 def correct(word): candidates

62930

「X」Embedding in NLP|Token N-Gram、Bag-of-Words 模型释义

使用另一个单词Milvus作为基础的所有格名词。...to 2-tuples bigram pairsvalues are the number of occurences bigram_counts = defaultdict(int) def build_bigram_model...然后,我们可以调用bigram_probability函数,该函数查找相应的双词组计数 Token 计数,并返回比率。...因此,BoW 模型中的整个文档可以转换为稀疏向量,其中向量的每个条目对应于文档中特定单词出现的频率。在这里,我们将文档“Milvus 是最广泛采用的向量数据库。...虽然词袋模型易于理解使用,但它们有明显的局限性,即无法捕捉上下文或单个 Token 的语义含义,这意味着它们不适合用于最简单的任务之外的任何事情

15710

2017年9月4日

映射类型的抽象基类是collections.abc模块中的MappingMutableMapping。 他们只是为dict其他类型定义形式接口。...比如统计单词出现频率 index= {} occurences = index.get(word,[]) occurences.append(location) index[word] = occurrences...处理上面的问题还有一种办法,使用collections.defaultdict,在实例化defaultdict的时候需要给构造 方法传递一个callable对象,这种callable对象会在gititem...index = collections.defaultdict(list) index[word].append(location) defaultdict里的default_factory属性通过defaultdict...可以保证顺序的dict,有popitem方法,默认删除的是 最后一个元素可以通过关键字参数popitem(last=False)来删除第一个被添加进去的元素 collections.ChainMap可以通过构造函数传入多个不同的映射对象

87490

python实现拼写检查器21行轻松搞定

,下面分析具体代码实现 代码分析 利用words()函数提取big.txt中的单词 def words(text): return re.findall('[a-z]+', text.lower())...text.lower()是将文本转化为小写字母,也就是“the”“The”一样定义为同一个单词。...利用train()函数计算每个单词出现的次数然后训练出一个合适的模型 def train(features): model = collections.defaultdict(lambda: 1) for...下面的函数返回一个将c进行一次编辑所有可能得到的单词w的集合: def edits1(word): splits = [(word[:i], word[i:]) for i in range(len...下面通过correct函数先选择编辑距离最小的单词,其对应的P(w|c)就会越大,作为候选单词,再选择P(c)最大的那个单词作为拼写建议 def correct(word): candidates =

78050

LLM 入门笔记-Tokenizer

BPE 其实是一个统计算法,不同意深度神经网络,只要给定一个数据集或者一篇文章,BPE 不管运行多少次都会得出同样的结果。下面我们看看 BPE 到底是在做什么。...token 逐一进行两两匹配,然后找出出现频率最高的那一对,例如,("h" "u" "g", 10) 匹配结果会到的 ("h", "u", 10) ("u", "g", 10),其他单词同理。...我们直接先构建一下语料库,以单词为单位对原始文本序列进行划分,并统计每个单词的频率。...遍历搜索,找到出现频率最高的 byte-pair def compute_pair_freqs(splits): pair_freqs = defaultdict(int) for word...") # 假设 tokens 是之前 tokenize 函数的输出结果 original_text = detokenize(tokens, merges) print(original_text)

37110
领券