单词

自然语言处理-主题模型

强颜欢笑 提交于 2020-04-08 12:06:01
主题模型理论(LDA): 一篇文章的每个词都是以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语而组成的。 P(单词|文档)=P(单词|主题)*P(主题|文档) 对于语料库中的每篇文档,LDA定义了如下生成过程(generative process): 1.对每篇文档,从主题分布中抽取一个主题; 2.从上述被抽到的主题所对应的单词分布中抽取一个单词; 3.重复上述过程直至文档中的每一个单词。 w代表单词,d代表文档,t代表主题;大写代表总集合,小写代表个体。 所以,LDA的核心公式如下: P(w|d)=P(w|t)*P(t|d) 直观地看这个公式,就是以Topic作为中间层,可以通过计算当前文档d中出现单词w的概率P(w|d)。实际应用中,更多的是求P(t|d),我们可以为一个文档中的一个单词计算它对应任意一个topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。如果这个更新改变了这个单词所对应的topic,就会反过来影响P(w|t)和P(t|d)。 我们通过观测,得到了“知道主题是什么,就用什么单词”的文本生成模型,那么根据贝叶斯定律,我们就可以反过来推出“看见用什么单词,我就知道主题是什么”。 PLSA根LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想。 来源: 51CTO 作者:

【笔记】李宏毅 -- ELMO、BERT、GPT

ε祈祈猫儿з 提交于 2020-04-07 19:56:19
1.背景知识 one-hot -> word class -> word embedding 不过传统的word embedding解决不了多义词的问题。 2. ELMO 为了解决上述问题,首先有了ELMO。 它是一个双向的RNN网络,这样每一个单词都对应两个hidden state,进行拼接便可以得到单词的Embedding表示。当同一个单词上下文不一样,得到的embedding就不同。 当然也可以搞很多层,每一层得到的embedding都要。 根据下游任务,可以得到不同embedding的权重。 3. BERT BERT只是Transformer中的Encoder,那Bert怎么训练呢?有两种方法。 第一个称为Masked LM,做法是随机把一些单词变为Mask,让模型去猜测盖住的地方是什么单词。 假设输入里面的第二个词汇是被盖住的,把其对应的embedding输入到一个多分类模型中,来预测被盖住的单词。 另一种方法是预测下一个句子,这里,先把两句话连起来,中间加一个[SEP]作为两个句子的分隔符。 而在两个句子的开头,放一个[CLS]标志符,将其得到的embedding输入到二分类的模型,输出两个句子是不是接在一起的。 实际中,同时使用两种方法往往得到的结果最好。 在ELMO中,训练好的embedding是不会参与下游训练的,下游任务会训练不同embedding对应的权重

Python:对输入的单词进行字典序排序输出

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-05 14:59:04
题目描述: 对输入的单词进行字典序排序输出,字典序定义: 1.单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准, 如果第一个字母相同,就用第二个字母为基准, 如果第二个字母相同就以第三个字母为基准。 依此类推,如果到某个字母不相同,字母顺序在前的那个单词顺序在前。 2.当一个短单词和一个长单词的开头部分都相同(即短单词是长单词从首字母开始的一部分),短单词顺序在前。 3.字母大小写不同的相同单词,只输出一次。 输入描述:不超过255个字符中,单词间用空格进行分隔,为简单起见,单词不包含连字符,无其它标点符号。 输出描述:输出排序后的单词,单词之间用空格隔开(最后不带空格),重复的单词只输出一次。 解答: import re def zdx(sword): l = [] temp = sword.split(" ") for i in temp: if i.lower() not in [j.lower() for j in l]: l.append(i) return " ".join(sorted(l, key=str.lower)) while True: s = input("请输入用空格进行分隔的单词:") if len(s) <= 255: p = re.compile(r"^[a-zA-Z\s]{0,255}$") if p.match(s):

史上最详细单词记忆法!

本小妞迷上赌 提交于 2020-04-04 18:53:11
编辑点评: 作者曾创下10天背完1万GRE单词的惊人记录,目前在美国留学的她为网友们总结了巨细糜遗的背单词方法,为单词痛苦的你还不快进来看看? [1] 考拉的背词方法及背词经历 [2] 考拉答同学问 中英双语 英文 中文 本文相关应用 贡献文章录音 贡献翻译稿 贡献听写稿 下载本文音频 背单词 鼠标 划词 已启用 挑错 收藏 评论 打印 因为单词是万事的基础,所以决定把单词提到前面来写。 1. 考拉的背词经历: 最一开始背单词的时候,郑老师扔给我们三个人一人一本专四单词,说,背吧,每天背100个单词,一周背700个单词,下周我检查你们。我们三个人直接傻了,心想:天啊,以前高中看单词都是一次10个20个,最多30个,怎么可能一天100个啊?但是也没办法啊,老师直接发话了,下周就要查,没办法,我和脏兮兮每天吃完中午饭,开始埋头背单词。一开始觉得那简直就是不可能完成的任务,刚看到第50个单词,就已经把第7个单词忘得一干二净了。后来两个人决定实行监督制,在老师检查我们之前,我们要先互相检查。凡是被对方查住的,就要画住,然后死死的再看它20眼。后来慢慢的,发现一天100个单词其实是自己完全能消化掉的。我们几乎每天都是走着看单词,坐着看单词,上课不听课也在看单词,吃饭时互相考单词,梦里梦到的都是单词,手上写的是单词,铅笔盒打开也是写着单词的小纸条,每天基本单词书就是我俩的男朋友

怀念VS2003--ASP.NET自己开发的曲线记忆法背单词软件

时光毁灭记忆、已成空白 提交于 2020-04-04 18:51:24
昨天微软发布了VS2010,回到天津后突然发现已经没有了当年VS2003发布时的那种激情。。。 VS2010发布之际,怀念一下VS2003,以下是使用VS2003开发的一个曲线背单词软件。 一、概述 现在学习英语的朋友很多,而学习英语能否成功,所掌握的词汇量占很大的比重,虽然现在很多英语学校都在积极倡导“母语教学”,但是对于成年人来说,再以母语方式来掌握第二种语言,实在是太难了,所以无论从何种意义来讲,都应该有一定的词汇量。 为了掌握更多的词汇量,有很多的办法,现在最流行的就是使用背单词软件,而目前这种背单词的软件也是琳琅满目,各式各样,在此不在一一列举。但是这些软件中的大部分都有一个共同的特点:越做越漂亮,词库越来越全,但是并没有根本意义上的改进,和看一本“大厚书”的感觉差不多,只是更费眼。 中国人背单词与外国人有些不同的场景,他们记住后,随时生活在英语的环境中,随时可以用,基本就不会再忘掉,而我们中国人背完单词后,从早上睁开眼到晚上睡觉,一般都在讲中文,很少还会记得那些单词是什么意思,所以一个单词无论怎么背,总的来说都会成为狗熊掰棒子,再漂亮的软件,再大的词库,也无法从根本上解决这个问题,我相信很多朋友都会有同感。 那么如何才算有效的记忆方式呢,最后我终于找到了一个叫做“艾宾浩斯记忆曲线记忆法”的宝典,何谓“艾宾浩斯记忆曲线记忆法”呢,简单的说,就是反复记忆

单词倒排

瘦欲@ 提交于 2020-04-04 11:57:43
单词倒排 描述 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。 输入 输入为一个字符串(字符串长度至多为100)。 输出 输出为按要求排序后的字符串。 样例输入 I am a student 样例输出 student a am I 代码 #include <iostream> #include <cstring> using namespace std; int main() { char ch[101], ans[101]; cin.getline(ch, 101); int len = strlen(ch); int j = 0; for (int i = len - 1; i >= -1; --i) { if ((i == -1 || ch[i] == ' ') && j != 0) { int start = i + 1; for (int ii = 0; ii < j; ++ii) cout << ch[start + ii]; if (i != -1) cout << " "; j = 0; } if (i >= 0 && ch[i] != ' ') ++j; } return 0; } 思路分析 其实这个题的难度是中下,不想对第一个单词进行判断,要注意逻辑操作的短路 来源: https://www

1009 说反话 (20 分)

末鹿安然 提交于 2020-04-03 16:34:27
给定⼀一句句英语,要求你编写程序,将句句中所有单词的顺序颠倒输出。 输⼊入格式: 测试输⼊入包含⼀一个测试⽤用例例,在⼀一⾏行行内给出总⻓长度不不超过80的字符串串。字符串串由若⼲干单词和若⼲干空格 组成,其中单词是由英⽂文字⺟母(⼤大⼩小写有区分)组成的字符串串,单词之间⽤用1个空格分开,输⼊入保证句句 ⼦子末尾没有多余的空格。 输出格式: 每个测试⽤用例例的输出占⼀一⾏行行,输出倒序后的句句⼦子。 输⼊入样例例: Hello World Here I Come 输出样例例: Come I Here World Hello 方法一(利用栈先进后出的特性) #include using namespace std; int main(){ stack v; string s; while(cin>>s) v.push(s); cout #include #include using namespace std; int main() { vector v; string str; getline(cin,str);//读取字符串,\n也读取了 string tmp=""; for(int i=0;i =0;i--) { if(i!=0) cout 来源: https://www.cnblogs.com/askyfullofstars/p/11196262.html

回溯算法----单词搜索

此生再无相见时 提交于 2020-04-02 10:20:48
给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] 给定 word = "ABCCED", 返回 true 给定 word = "SEE", 返回 true 给定 word = "ABCB", 返回 false 提示: board 和 word 中只包含大写和小写英文字母。 1 <= board.length <= 200 1 <= board[i].length <= 200 1 <= word.length <= 10^3 解答(C++): class Solution { public: bool en; bool backTrace(vector<vector<char>>& board, int i, int j, string& word, int index) { if (board[i][j] != word[index]) return false; if (index == word.size() -1) return true; char tmp = board[i][j

使用linux的小技巧(最近更新 20200331)

别来无恙 提交于 2020-03-31 20:56:36
1.将/根目录下的 中文文件夹名称改为 英文,运行于centos 7. export LANG=en_US xdg-user-dirs-gtk-update 2.ctrl + a 跳转到 命令行 首 ctrl + e 跳转到 命令行 尾 alt + f 向后移动一个单词 alt + b 向前移动一个单词. crtl + w 删除一个单词 esc + u将光标后的单词变为大写 esc + l 将光标后的单词变为小写 来源: https://www.cnblogs.com/--0--/p/12607372.html

【bzoj3940】[Usaco2015 Feb]Censoring

我怕爱的太早我们不能终老 提交于 2020-03-31 08:02:26
【题目描述】 FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过10^5的字符串S。他有一个包含n个单词的列表,列表里的n个单词 记为t_1...t_N。他希望从S中删除这些单词。 FJ每次在S中找到最早出现的列表中的单词(最早出现指该单词的开始位置最小),然后从S中删除这个单词。他重复这个操作直到S中 没有列表里的单词为止。注意删除一个单词后可能会导致S中出现另一个列表中的单词 FJ注意到列表中的单词不会出现一个单词是另一个单词子串的情况,这意味着每个列表中的单词在S中出现的开始位置是互不相同的 请帮助FJ完成这些操作并输出最后的S 【样例输入】 begintheescapexecutionatthebreakofdawn 2 escape execution 【样例输出】 beginthatthebreakofdawn 【题解】 和p3942一样的思路(连题目名字都一样),建议先写p3942,我可以说这个东西叫可持久化AC自动机吗?(并没有这个东西) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<ctime> 6 #include<cmath> 7 #include<algorithm> 8 using namespace std; 9