单词

贝叶斯拼写检查器

故事扮演 提交于 2019-11-28 03:24:13
p(h+|D) = p(h) * p(D|h+) / p(D) 表示一个单词输错的概率 = 单词的词频 * 一个输错单词的可能的正确单词的数量 p(h-|D) = p(h) * p(D|h-) / p(D) 第一步:读取词库,通过正则找出每个单词,并统计单词的词频 import collections, re #找出所有的单词,并且变成小写 def word(text): return re.findall('[a-z]+', text.lower()) #晒出内容的词频 def train(feature): model = collections.defaultdict(lambda :1) for f in feature: model[f] += 1 return model NWORDS = train(word(open('big.txt').read())) 第二步 : 模拟一个错误单词的其他拼写可能性 alphabet = 'abcdefghijklmnopqrstuvwxyz' # 编辑出其他拼写的可能性 def edits1(word): n = len(word) return set([word[0:i]+word[i+1:] for i in range(n)] + # deletion [word[0:i]+word[i+1]+word[i]+word

Hat’s Words HDU - 1247 (字典树)

北城以北 提交于 2019-11-28 02:02:04
Hat’s Words HDU - 1247 题目链接: https://vjudge.net/problem/HDU-1247 题目: A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary. You are to find all the hat’s words in a dictionary. InputStandard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 50,000 words. Only one case. OutputYour output should contain all the hat’s words, one per line, in alphabetical order.Sample Input a ahat hat hatword hziee word Sample Output ahat hatword题意:就是给你一个单词列表,然后单词可以从中间拆成任意两部分

[LeetCode] 212. 单词搜索 II

北战南征 提交于 2019-11-28 01:07:54
题目链接: https://leetcode-cn.com/problems/word-search-ii/ 题目描述: 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。 示例: 输入: words = ["oath","pea","eat","rain"] and board = [ ['o','a','a','n'], ['e','t','a','e'], ['i','h','k','r'], ['i','f','l','v'] ] 输出: ["eat","oath"] 思路: 前缀树(字典树) 先做一下前缀树的数据结构 208. 实现 Trie (前缀树) | 题解链接 我们把所有单词构造成前缀树 再遍历 board 用DFS分别在前缀树上跑 有不清楚的地方, 欢迎留言~ 相关题型: 212. 单词搜索 II 421. 数组中两个数的最大异或值 代码: class Solution: def findWords(self, board: List[List[str]], words: List[str]) -> List[str]: trie = {} for

每日单词

◇◆丶佛笑我妖孽 提交于 2019-11-28 00:01:21
2019年8月20日 racial   sew  propose   snap  highlight   accuse 来源: https://www.cnblogs.com/bbllw/p/11381594.html

[PAT Basic] 1009.说反话

馋奶兔 提交于 2019-11-27 21:59:27
1009 说反话 (20 分) 题目来源 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 输出格式: 每个测试用例的输出占一行,输出倒序后的句子。 输入样例: Hello World Here I Come 输出样例: Come I Here World Hello 分析: 利用栈的特性(后进先出),每输入一个单词就压栈,最后依次弹出单词 (栈顶)Hello - World - Here - I - Come(栈底) #include <iostream> #include <stack> #include <string> using namespace std; int main() { string str; stack<string> words; while (cin >> str) { words.push(str); } cout << words.top(); words.pop(); while (!words.empty()) { cout << ' ' << words.top(); words.pop(); } return

AC自动机 洛谷P3966 单词

匆匆过客 提交于 2019-11-27 21:25:32
题目链接: https://www.luogu.org/problem/P3966 题意:一篇论文是由许多个单词组成的,给出N个单词,查询每个单词在文章中出现的次数。 分析:其实还是裸的AC自动机。。。 构成文本串的时候直接在单词后面加一个特殊符号就行,查询函数遇到这个符号就重新从根开始,其他和上一篇一模一样。 insert,get_fail,topu函数都没有任何变化,因为我们插入的还是原本的单词,唯一有变化的只是文本串,所以只有用到文本串的查询函数变化了。 查询函数每次重头开始,就相当于所有模式串在按顺序来的一个个模式串里面匹配了。 #include<bits/stdc++.h> using namespace std; const int maxn=1e6+300;//单词间自行添加了符号,稍做扩大 const int inf=0x3f3f3f3f; typedef long long ll; #define meminf(a) memset(a,0x3f,sizeof(a)) #define mem0(a) memset(a,0,sizeof(a)); struct node{ int fail;//失配指针fail int vis[26];//子节点的位置,也就是字典树的那26个字母 int end;//如果是尾节点就记录 int ans;//用来记录出现次数 }AC

L语言

▼魔方 西西 提交于 2019-11-27 20:36:39
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的。现在你要处理的就是一段没有标点的文章。 一段文章T是由若干小写字母构成。一个单词W也是由若干小写字母构成。一个字典D是若干个单词的集合。我们称一段文章T在某个字典D下是可以被理解的,是指如果文章T可以被分成若干部分,且每一个部分都是字典D中的单词。 例如字典D中包括单词{‘is’, ‘name’, ‘what’, ‘your’},则文章‘whatisyourname’是在字典D下可以被理解的,因为它可以分成4个单词:‘what’, ‘is’, ‘your’, ‘name’,且每个单词都属于字典D,而文章‘whatisyouname’在字典D下不能被理解,但可以在字典D’=D+{‘you’}下被理解。这段文章的一个前缀‘whatis’,也可以在字典D下被理解,而且是在字典D下能够被理解的最长的前缀。 给定一个字典D,你的程序需要判断若干段文章在字典D下是否能够被理解。并给出其在字典D下能够被理解的最长前缀的位置。 输入格式 输入文件第一行是两个正整数n和m,表示字典D中有n个单词,且有m段文章需要被处理。之后的n行每行描述一个单词,再之后的m行每行描述一段文章。 其中1<=n, m<=20,每个单词长度不超过10,每段文章长度不超过1M。 输出格式 对于输入的每一段文章

NLP之词袋模型二

假如想象 提交于 2019-11-27 19:28:01
在 NLP之词袋模型一 中介绍了最基本利用词袋模型(Bag of Words)进行词向量表达对方法,本文介绍几种提升词袋模型性能的方法。 提升词袋模型性能的方法主要在以下几个方面: 词袋的管理 词向量表达方法的选择 词袋的管理 管理词袋包括:词袋的创建、词袋的维护。 为了更好的管理词袋,我们首先考虑以下几个方面: 词袋可能会很大,特别是当我们处理较多文本的时候。 词袋很大的话,容易导致词向量比较稀疏(即0值特别多)。 因此,通过合理的方法压缩词袋的大小是很有必要的。压缩词袋的方法包括且不限于: 忽略人名、地名等对象的名字 忽略标点符号 忽略高频且无意义的词,如:a,the,的,了 自动改正拼写错误的词 将单词的变形(如过去式、过去分词)统一转化为词干 。。。 此外,还有一种略微复杂点的方法:用词组来组成词袋。以前词袋中是一个个的单词,现在换成词组的形式,不仅可以减少词袋的size,而且会更有意义。这种方法就是N-gram。 N-gram 什么是N-gram,看下面几个例子就明白了。 2-gram 下对上文第一句话的分词: “it was” “was the” “the best” “best of” “of times” 词向量表达方法的选择 词向量中值的分值(数值大小) 一旦选择了词汇表,就需要对示例文档中单词的出现进行评分。 在上文的示例中,我们已经看到了一种非常简单的评分方法

Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN )

混江龙づ霸主 提交于 2019-11-27 19:04:22
作者提出了一种多模态循环神经网络(AlexNet / VGGNet +多模式层+ RNN),用CNN提取图像特征,单词经过两层词输入到RNN中,最后将单词特征,图像特征,以及RNN的hidden一起输入到多模态层,经过Softmax生成下一个词的概率分布。RNN主要是为了保存句子前面的特征。 加入两层Embedding,比单层更有效学习单词的稠密表示 不使用循环层来存储视觉信息 图像特征与句子描述中的每个单词一起被输入到m-RNN模型 Key Point 大多数句子 - 图像多模态模型使用预先计算的词嵌入向量作为其模型的初始化,相比之下,作者随机初始化他们的单词嵌入层并从训练数据中学习它们。实验效果更好 通过对Flickr8K数据集的交叉验证,对超参数(如层尺寸和非线性激活函数的选择)进行调优,然后在所有的实验中进行固定。 以前的工作:将图像描述视作检索任务,首先提取句子和图像特征,将其嵌入共同的语义空间,计算图像和句子之间的距离。生成图像时,从句子数据库中检索距离最小的句子作为描述。这种方法不能自动生成丰富的描述 Benchmark datasets for Image Captioning: IAPR TC-12 ( Grubinger et al.(2006) ), Flickr8K ( Rashtchian et al.(2010) ), Flickr30K ( Young

统计难题 HDU - 1251(字典树)

邮差的信 提交于 2019-11-27 16:53:39
统计难题 HDU - 1251 题目链接: https://vjudge.net/problem/HDU-1251 Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串. 注意:本题只有一组测试数据,处理到文件结束. Output对于每个提问,给出以该字符串为前缀的单词的数量. Sample Input banana band bee absolute acm ba b band abc Sample Output 2 3 1 0思路:字典树模板 // // Created by HJYL on 2019/8/17. // #include <iostream> #include <vector> #include <map> #include <string> #include <queue> #include <stack> #include <set> #include <algorithm> #include <cstdio> #include