-
反问疑问_反问句变陈述句,为什么有些孩子老出错?课文中这些例子理解才行...
2020-12-30 10:48:46在小学语文句子类试题中,反问句是我们经常考到的一种句式,特别是“请给下面句子换一种说法”类型的试题中,面对没有反问词的句子,小学生们往往判断不清这个句子到底是不是反问句,因此在变换句式时出现错误。...在小学语文句子类试题中,反问句是我们经常考到的一种句式,特别是“请给下面句子换一种说法”类型的试题中,面对没有反问词的句子,小学生们往往判断不清这个句子到底是不是反问句,因此在变换句式时出现错误。
那么,什么是反问句呢?我们只有透彻地了解这一句式的特点,才能做到正确判断,在保证句子原意不变的情形下变换句式。
所谓反问句,是用疑问的形式,来表示肯定或否定的意思。常见的反问句中往往都含有反问词,比如“难道、怎么、怎能”等,句末还有语气词“呢、吗……”。比如:
“你怎能这样说她呢?”意思是“你不能这样说她。”
“难道你今天不去上学吗?”说话者想表达的意思是:你今天应该去上学。
像这种有反问词的反问句,同学们一般很容易判断,在变换句式时,不用多想就可以将说话者要表达的肯定或否定的意思表达出来。
但是有的反问句中并没有出现反问词,看起来很像疑问句,因此在变换句式时,有些同学就不知所措了。
其实判断该句式是否是反问句,是要看说话者要表达的意思,它最显著的特点是“只问不答,问中有答。
同学们应该善于结合句子出现的上下文,揣摩说话者真正要表达的意思,判断说话者此话中是否有要表达的肯定或否定的意思。
比如,三年级语文《花的学校》中有这样两句话:“你没有看见他们怎样地急着要到那儿去吗?你不知道他们为什么那样急急忙忙吗?”
这两句话反问词并没有出现,但结合上文“你可知道,妈妈,它们的家在天上,在星星住的地方。”和下文“我自然能够猜得出它们是对谁扬起双臂来:它们也有它们的妈妈,就像我有我的妈妈一样。”我们就不难理解,诗人在这里的问句中是,只问不答,问中有答,强调“你应该看见他们怎样地急着要到那儿去,你应该知道他们为什么那样急急忙忙。”因为这些花孩子要急着去找他们的妈妈。因此,这两句都是反问句,变换句式时也应该按反问句变陈述句的方法来变换。
另外,在《不懂就要问》一课中也出现了没有反问词的反问句:“这样糊里糊涂地背,有什么用呢?”此句是小孙中山的想法,虽为问句,但他心中并无疑惑,而是表达他认为“这样糊里糊涂地背,没有什么用。”
由此可见,判断一个疑问句式是不是反问式,关键一点在于理解说话人所要表达的意思,如果心中有疑惑,需要人来解答,则是疑问句,如果句中不仅有答案,不需要人来回答,而且表肯定或否定的语气更加强烈,则是反问句。
弄清该句真正要表达的语意,那么反问句改为陈述句才不会把语意弄错,方法如下:
第一步:将反问句中的肯定词改为否定词,或者将否定词改为肯定词。
例如:还有比这更好听的叫声吗?改为陈述句时要把句中表肯定的“有”字,改为“没有”——没有比这更好听的叫声了。
第二步:有反问词的将反问词去掉。
例如:你怎么能不跟我说一声,就把我的东西拿走呢?改为陈述句时,要将反问词“怎么”去掉,把“能”改成“不能”——你不能不跟我说一声,就把我的东西拿走。
第三步,将句末的语气词去掉,问号改为句号。
反问句是问句形式,因此句末是问号;而改为陈述句后,是陈述语气,句末要用句号。
在小学之所以要进行反问句与陈述句之间的句型转换,是为了要同学们更加清楚反问句所表达的意思,实际上,反问句相比陈述句,有加强语气,发人深省的作用。同学们在写作文时,要试着多用用反问句,来表达自己强烈肯定或否定的语气才好。
-
pyTorch自然语言处理简单例子
2018-01-29 00:00:00这个例子是比如给定一句话:Give it to me判断是 ENGLISHme gusta comer en la cafeteria判断是 SPANISH就是这么简单的例子。来看怎么实现:准备数据 格式 [(语句,类型),...]data是train的时候用的语句正文共5225个字,预计阅读时间12分钟。
最近在学pyTorch的实际应用例子。这次说个简单的例子:给定一句话,判断是什么语言。这个例子是比如给定一句话:
Give it to me
判断是 ENGLISH
me gusta comer en la cafeteria
判断是 SPANISH
就是这么简单的例子。
来看怎么实现:
准备数据 格式 [(语句,类型),...]
data是train的时候用的语句,test_data是test的时候用的语句data = [ ("me gusta comer en la cafeteria".split(), "SPANISH"), ("Give it to me".split(), "ENGLISH"), ("No creo que sea una buena idea".split(), "SPANISH"), ("No it is not a good idea to get lost at sea".split(), "ENGLISH") ] test_data = [("Yo creo que si".split(), "SPANISH"), ("it is lost on me".split(), "ENGLISH")]
因为文本计算机室识别不出来的,他们只认识01串,也就是数字。所以我们得把文本映射到数字上。
word_to_ix = {}for sent, _ in data + test_data: f
or word in sent:
if word not in word_to_ix: word_to_ix[word] = len(word_to_ix) print(word_to_ix)
输出word_to_ix (意思是word to index)是:
{'me': 0, 'gusta': 1, 'comer': 2, 'en': 3, 'la': 4, 'cafeteria': 5, 'Give': 6, 'it': 7, 'to': 8, 'No': 9, 'creo': 10, 'que': 11, 'sea': 12, 'una': 13, 'buena': 14, 'idea': 15, 'is': 16, 'not': 17, 'a': 18, 'good': 19, 'get': 20, 'lost': 21, 'at': 22, 'Yo': 23, 'si': 24, 'on': 25}
这里先提前设置下接下来要用到的参数
VOCAB_SIZE = len(word_to_ix) NUM_LABELS = 2#只有两类 ENGLISH SPANISH
固定模板
def init(self, num_labels, vocab_size):初始化,就是输入和输出的大小。这里我们要输入是一个句子,句子最大就是拥有所有字典的词,这里也就是vocab_size(下面再说怎么将一句话根据字典转换成一个数字序列的),输出就是分类,这里分为2类,即num_labels。这里我们用的是线性分类 ,即nn.Linear()。
def forward(self, bow_vec):bow_vec是一个句子的数字化序列,经过self.linear()得到一个线性结果(也就是预测结果),之后对这个结果进行softmax(这里用log_softmax是因为下面的损失函数用的是NLLLoss() 即负对数似然损失,需要log以下)
class BoWClassifier(nn.Module):
#nn.Module 这是继承torch的神经网络模板
def __init__(self, num_labels, vocab_size):
super(BoWClassifier, self).__init__()
self.linear = nn.Linear(vocab_size, num_labels)
def forward(self, bow_vec):
return F.log_softmax(self.linear(bow_vec))
def make_bow_vector(sentence, word_to_ix)
大概能看懂什么意思吧。就是把一个句子sentence通过word_to_ix转换成数字化序列.比如 sentence=我 是 一只 小 小 鸟 word_to_id={你:0,我:1,他:2,不:3,是:4,大:5,小:6,猪:7,鸟:8,,} make_bow_vector之后的结果是[0,1,0,0,1,0,2,0,1]
view()就是改变下向量维数。这里是讲len(word_to_ix)1->1len(word_to_ix)def make_bow_vector(sentence, word_to_ix): vec = torch.zeros(len(word_to_ix)) for word in sentence: vec[word_to_ix[word]] += 1 return vec.view(1, -1)
这个就不用说了吧 一样。(如果想知道torch.LongTensor啥意思的话。可以看看。Torch中,Tensor主要有ByteTensor(无符号char),CharTensor(有符号),ShortTensor(shorts), IntTensor(ints), LongTensor(longs), FloatTensor(floats), DoubleTensor(doubles),默认存放为double类型,如果需要特别指出,通过torch.setdefaulttensortype()方法进行设定。例如torch.setdefaulttensortype(‘torch.FloatTensor’)。 )
def make_target(label, label_to_ix): return torch.LongTensor([label_to_ix[label]])
这里再介绍下model.parameters()这个函数。他的返回结果是model里的所有参数。这里我们用的是线性函数,所以就是f(x)=Ax+b中的A和b(x即输入的数据),这些参数在之后的反馈和更新参数需要的。
model = BoWClassifier(NUM_LABELS, VOCAB_SIZE)
for param in model.parameters():
print("param:", param)
可以看出A是2len(vocab_size),b是21
param: Parameter containing:Columns 0 to 9 0.0786 0.1596 0.1259 0.0054 0.0558 -0.0911 -0.1804 -0.1526 -0.0287 -0.1086-0.0651 -0.1096 -0.1807 -0.1907 -0.0727 -0.0179 0.1530 -0.0910 0.1943 -0.1148Columns 10 to 19 0.0452 -0.0786 0.1776 0.0425 0.1194 -0.1330 -0.1877 -0.0412 -0.0269 -0.1572-0.0361 0.1909 0.1558 0.1309 0.1461 -0.0822 0.1078 -0.1354 -0.1877 0.0184Columns 20 to 25 0.1818 -0.1401 0.1118 0.1002 0.1438 0.0790 0.1812 -0.1414 -0.1876 0.1569 0.0804 -0.1897
[torch.FloatTensor of size 2x26]param: Parameter containing: 0.1859 0.1245[torch.FloatTensor of size 2]
我们再看看model的def forward(self, bow_vec):怎么用。这里就想下面的代码一样,直接在mode()填一个参数即可,就调用forward函数。
sample = data[0] bow_vector = make_bow_vector(sample[0], word_to_ix) log_probs = model(autograd.Variable(bow_vector))
print("log_probs", log_probs)
输出是:(就是log_softmax后的值)
log_probs Variable containing:-0.6160 -0.7768[torch.FloatTensor of size 1x2]
我们这里看看在test上的预测
label_to_ix = { "SPANISH": 0, "ENGLISH": 1 }
for instance, label in test_data:
bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix))
log_probs = model(bow_vec)
print log_probsprint next(model.parameters())[:,word_to_ix["creo"]]
结果是
Variable containing:
-0.5431 -0.8698
[torch.FloatTensor of size 1x2]
Variable containing:
-0.7405 -0.6480
[torch.FloatTensor of size 1x2]
Variable containing:
-0.0467 0.1065
[torch.FloatTensor of size 2]
下面就该进行重要的部分了。循环训练和更新参数
这里我们用的损失函数是nn.NLLLoss()负对数似然损失
优化依然用的最常见的optim.SGD() 梯度下降法
一般训练5-30次最终优化基本不再变化每一步过程:
a.首先都要model.zero_grad(),因为接下来要极端梯度,得清零,以防问题
b.将数据向量化(也可以说是数字序列化,转成计算机能看懂的形式)
c.得到预测值
d.求损失loss_function
e.求梯度loss.backward()
f.更新参数optimizer.step()loss_function = nn.NLLLoss() optimizer = optim.SGD(model.parameters(), lr=0.1)for epoch in range(100): for instance, label in data: model.zero_grad() bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix)) target = autograd.Variable(make_target(label, label_to_ix)) log_probs = model(bow_vec) loss = loss_function(log_probs, target) loss.backward() optimizer.step()
在测试集上测试
for instance, label in test_data:
bow_vec = autograd.Variable(make_bow_vector(instance, word_to_ix))
log_probs = model(bow_vec)
print log_probs
我们在结果上很容易看到第一个例子预测是SPANISH最大,第二个是ENGLISH最大。成功了。
Variable containing:-0.0842 -2.5161[torch.FloatTensor of size 1x2]Variable containing:-2.4886 -0.0867[torch.FloatTensor of size 1x2]
原文链接:https://www.jianshu.com/p/7b2d9e6e3633
查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:
www.leadai.org
请关注人工智能LeadAI公众号,查看更多专业文章
大家都在看
TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络
-
判断素数最简捷的写法
2009-09-30 11:30:00我所见过的最简捷的判断素数的写法,一句非常简捷的语句完成对素数的判断, 《C++标准程序库》第122页的一个例子程序,bool isPrime(int number){ number = abs(number); if(number == 0 || number == 1) { return ...我所见过的最简捷的判断素数的写法,一句非常简捷的语句完成对素数的判断, 《C++标准程序库》第122页的一个例子程序,
-
js设备分发:判断不同的设备并分发到不同的链接
2020-07-09 11:40:14前端开发中,遇到需要通过判断客户端类型来跳转页面的情况时,这个时候就需要判断用户浏览该页面使用的设备类型,比如说是pc端还是手机端,然后根据设备不同来跳转到不同的页面。 举个例子:现在有个index.html页面...前端开发中,遇到需要通过判断客户端类型来跳转页面的情况时,这个时候就需要判断用户浏览该页面使用的设备类型,比如说是pc端还是手机端,然后根据设备不同来跳转到不同的页面。
举个例子:现在有个index.html页面,还有一个pc.html页面,还有一个手机端展示页面phone.html。现在我想进入index.html页面,判断设备类型,然后跳转到pc.html或者phone.html。
其实一句话就可以了。
window.location.href = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent) ? "phone.html" : "pc.html";
或者使用if语句。
if(/Android|webOS|iPhone|iPod|BlackBerry|WindowsCE/i.test(navigator.userAgent)) { window.location.href = "phone.html"; } else { window.location.href = "pc.html"; }
使用浏览器访问index.html页面,当前设备是PC端,跳转到pc.html页;
然后,重新访问index.html页面,当前设备是移动端,则跳转到phone.html页。
另外链接:js如何判断用户使用的设备类型及平台
-
一句话说明浮点数为何不能直接 if(f== 0.0)这样判断
2015-07-23 22:20:11float f = 0.33f * 0.2f; if(f - 0.066f == 0.0f) f = 0; 这个是来自csdn论坛的一个帖子,说的比较简单...上述例子中,f第一次计算结果不是0.066,是比0.066稍大的一个数f = 0.066000007,傻眼了吧,呵呵。当然, -
vc中使用汇编程序模块的例子
2004-07-27 00:00:00这个问题同UNIX中处理机调度函数(switch)的那个if语句(第一句)一样. 程序执行完save(&sp)后得到因为条件为假而执行else语句,却在判断之前将程序指针保存在sp中了. else语句中的resume(&sp),该函数很狡猾将堆栈中的... -
oracle 函数综合小例子 日期的操作等
2013-03-29 13:36:29...这里思路是把birthday与当前的日期相比 通过年份的差来判断 首先要把日期类型转化成字符串, to_char(obj,formart) to_char(birthday,'yyyyMMdd') 顺带一句 转化成日期 to_date(str,for... -
1.26轻量级 Django 终于完成第一章的例子
2018-01-26 10:16:172.有一行代码有问题 if name== main”: 应该是if__name__==’main‘才对,这句话是用来了判断 这个文件是被调用,还是主动运行 3.gunicorn 这个专门写给django的server必须在linux机器上才能用,不然会报错说找不到... -
如何根据传递函数判断模拟滤波器的类型
2018-08-30 11:37:43如何根据传递函数判断模拟滤波器的类型 用拉氏变换求出H(s),然后记住一句话:分子上有什么就通什么! 举个例子: H(s)=as/(bs+c) 分子上有“高次”,所以是高通。 这里的“高次”是这个意思: 分母上有s的0次... -
中if判断中文_还在为Excel的判断发愁?让if函数帮你判断,你就喝茶去好了
2021-01-15 07:23:35大家好我是雨果,今天我们来继续学习函数,之前由于工作的原因断更了几天,今天我们继续,今天要跟大家分享的是大名鼎鼎的IF函数,这个...这句话其实就是一个if函数,我们把这句话的关键词抽取出来可以写成这样,如... -
一个例子解读$#,gt,expr,shift及循环的使用。
2014-03-31 10:56:37例子:利用shift计算所有参数的乘积(假设参数均为int) #!/bin/bash result = 1 while [ $# -gt 0 ] #注意空格,方括号为条件判断,$#参数个数,$@参数单独引,$*参数一起引;该句表示参数个数大于0,如果用-eq... -
AJAX与JSP结合实例,一个很简单实用的例子:身份证号码检验
2008-03-04 10:01:00这个例子用途:判断输入的身份证号码是否正确,这里能够检查出长度错误,日期错误,验证码错误。先做一个普通网页 ajaxtest.jsphttp://www.w3.org/TR/html4/loose.dtd">无标题文档 身份证号码 function checkidno... -
怎样根据系统函数的零极点个数和类型判断滤波器类型
2020-05-16 15:28:09根据系统函数快速判断滤波器类型 (1)死办法,用傅里叶变换求出H(f),在画出幅频特copy性曲线,看高频部分是不是“通” (2)用拉氏变换求出H(s),然后记住一句话:分子上有什么就通什么! 举个例子: H(s)=as/(bs+c... -
GPS状态判断 SIM卡信息读取.zip
2019-07-10 12:33:48第二个例子是一个判断当前GPS状态的例子,如果没有开启GPS会自动转跳到设置页面,源码有注释,几个例子都很简单,第三个和第四个例子分别是GPRS状态检测和WIFI状态检测,都是一句话的事,需要的朋友可以下载看一下。... -
由一个C语言递归判断回文数的程序产生的回忆
2011-11-17 21:22:00引用他博文中的一句话,也是思考的一个方式:可以用递归实现的场景要满足两个条件: 第一:这个问题是否可以分解为形式相同但规模更小的问题? 第二:如果存在这样一种分解,那么这种分解是否存在一种简单情境... -
java random一句话_Java的Random实例
2021-02-25 18:25:34其实这个思路还挺简单的:生成一个随机数,判断若该随机数>6或7什么的,就有好装备否则就是不好的。于是就琢磨了下,写个小例子玩玩。说明:假设总共**10次,好东西3个,随机数大于6的时候才能有好东西。因此先... -
循环和判断
2018-12-02 20:46:00while循环是在条件不成立的时候停止,因此while的作用概括成一句话就是:"只要条件成立,就一直在做..."一个简单的例子:下面输出"天真好",就会一直不停的输出.(一定要记得停止.) 1 while True: # while 重复执行 ... -
一句废话都没有的Pycharm(三):if语句
2021-03-03 19:35:56一句废话都没有的Pycharm(三) 介绍 - 选择结构 分支结构 单分支结构 双分支结构 多分支结构 嵌套if结构 条件表达式 pass语句 1.分支结构 1.1 单分支结构 语法结构: 注:条件表达式后有冒号!! if 条件... -
一句话解释python的装饰器_一篇文章让你明白python的装饰器
2020-12-17 11:55:20在看闭包问题之前先来看看关于python中作用域的问题变量作用域对于上述代码...其实这里就是涉及到变量作用域的问题当Python编译函数的的定义体的时候,它判断b是局部变量,毕竟在函数中有b = 9表示给b赋值了,所以py... -
置换怎么表示成轮换_置换的轮换分解----判断n个数是否为全排列
2020-12-23 04:44:29一、简单解释没有数学背景的人,这句话很难读懂,下面我们来看一个简单的例子。假设我们有这样一个置换 P:1, 2, 3, 4, 52, 5, 4, 3, 1那么这个置换是什么样的轮换的乘积呢?我们先从 1 出发,1 被换到 2,2 被换到.... -
PHP 判断常量,变量和函数是否存在
2019-09-25 00:14:23一句话就把我标题中的问题全部解决了. 还是举几个例子吧: <?php /* 判断常量是否存在*/ if (defined('MYCONSTANT')) { echo MYCONSTANT; } //判断变量是否存在 if (isset($myvar)) { echo "存在变量$myvar."; ... -
JAVA学习篇3——判断语句
2018-10-22 11:56:22判断语句:if语句: ... if语句在大括号省略的时候,只是对下面一句代码产生作用 例子:编写一个程序:接收三个参数 number1 number2 number3, 对三个参数进行排序,从小到大输出(用if语句实现) ... -
opencv 检测运动物体 例子时出现图像反转
2012-11-10 15:49:00翻转的判断可以 用IplImage::origin参数得知,origin为1即是翻转图。使用函数cvFlip进行翻转。 改出方法为: 在"//显示图像" 后面增加下面两句 pFrImg->origin=1; pBkImg->origin=1; ... -
linux脚本编程快速入门-例子+基本语法
2007-09-24 12:56:00这句话是必须的,告诉系统由什么脚本解析器来执行#!/bin/bash判断语句,要注意条件与[]之间的空格test_if(){ echo "Please Input a Path" read path 从控制台读取输入 if [ -d $path ]; then 判断输入的变量是否...
-
百柱-源码
-
STEM课程-设计假体.zip
-
基于稀疏感知频谱估计的有效运动目标检测算法
-
基于导引滤波器的空间色域映射
-
React应用-源码
-
权益法工具-源码
-
CommandAPI-源码
-
priority queue java_Java中的PriorityQueue add() 方法 - Break易站
-
precede和previous_构词法词缀
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
MySQL 数据类型和运算符
-
MySQL 函数、用户自定义函数
-
preg_replace在java中_Java相当于PHP的preg_replace_callback
-
MySQL 事务和锁
-
Oracle_11g_Linux到Linux_DataGuard部署
-
单脉冲合成Kong径雷达对地面移动目标的持续虚警率检测的统计分析
-
preg_replace在java中_PHP preg_replace() 函数
-
投标方法论
-
MySQL NDB Cluster 负载均衡和高可用集群
-
开源 3D 动画建模渲染软件 Blender 2.91.2 x64 中文多语免费版.zip