Giter Site home page Giter Site logo

deeplearningstartup's People

Contributors

crickeysong avatar iamzhuoxuan avatar sunnyhuang42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

deeplearningstartup's Issues

[郝文飞]完成 DL101 入学挑战啦

完成说明

1. 代码地址

**2.**我的输出结果:

这种 情况 : 77
没有 什么 : 70
这个 问题 : 57
因为 他们 : 55
如果 我们 : 50
所有 这些 : 47
这种 观点 : 46
这个 世界 : 40
他们 自己 : 38
我们 可以 : 37

感想

**1.**统计出现频率最高的二元词组,采用的是字典排序;1.12 序列中出现次数最多的元素这个算法实现的话效率会更高;完成任务的时候我没有想到这种方法,代码中贴的是自己想到的方法
**2.**想在机器学习方面学习一下,怕跟不上社会呀,好期待开智的课程呀

代码上传GitHub遇到的问题

各位同学,本人上传代码到GitHub的时候需要配置SSH Keys,目前遇到了这样一个问题:
在终端输入:ssh -T [email protected]
显示的是:ssh: Could not resolve hostname github.com: nodename nor servname provided, or not known
stackoverflow的解决方案是修改DNS:将192.169.16.1 修改成8.8.8.8和8.8.4.4
我着该方法去执行,还是没有效果,希望那位同学帮忙解答下这个问题。多谢!

[fatfox2016]完成 DL101 入学挑战啦

挑战成果: GitHub 仓库地址

感想:

从加入开智学习python起,就在不停的刷新认知。首先是自信心,作为十几年学校学习中的loser,对学习毫无信心可言。现在步入中年,记忆力更是剧烈下降。其次是元认知,16年以前我根本不知道这个概念,最近半年“认知科学”“设计模式”“元知识”等等概念的刷新,给我开了一扇窗。最后就是有耐心的执行,具体到python学习中,就是立刻写代码。
虽然目前我的数学能力只有初中生水平,编程能力只有python入门级,但是我相信只要有信心、耐心、恒心、细心,对Deep Learning的学习,我看到了希望。多说无用,先啃两口统计学、概率论去了。

[soniclr]完成DL1O1入学挑战

git地址

  1. 完成《Learn Python the Hard Way》 前 42 个小练习,如果精力不足,那至少完成前 17 个哦。据统计一般 20 ~ 30mins 就能完成一个小练习,相信你也可以~
  • 这本书几年前看过,也完成相关练习,这次重读最新版本(尝试用英文读),python好几年没写了,生疏不少,照抄运行了先,学习语法
  1. 统计这篇 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。「二元词组」即文章中所有接连出现的两个词,如「今天 天气 不错」有「今天 天气」,「天气 不错」两个「二元词组」。
  • 做这个练习,一开始是懵逼的,查google,有jieba等,后来研究了下txt文本,发现提供的文本已经按照空格分好了词,貌似只需要split就可以搞定。
  • 后来卡在一堆的乱码和排序,参考了其他同学的作品,搬过来replace的代码和sorted的使用,查了下使用方法,貌似可行,按照自己的理解进行了修改
  • 第二个困住我的是,”二元词组“,无法理清只有两个字两个字的才算,还是其他字数的组合也算,干脆弄了两个方法
  1. 其他感受
  • 我个人是写C++出来的,对于python有很多不懂的语法,库也了解的不多,这次重新拿起来,确实有不少收获,python对于文本的解析很强大。
  • 自己的数学等知识已经快不行了,不知道入门后能否跟得上,深深的担忧,要补好多课

【mctop】完成DL101 入学挑战啦

仓库地址

https://github.com/mctop/mcdeeplearn.git

感想

  1. 说完成入学挑战真是感觉非常惭愧,应该说是基本抄袭了前面的学员的成果。但在这抄袭过程中,确实学到了很多知识,自己至少能看懂大家的代码,并且能在这基础上进行简单的修改,对于刚学Python的人来说也有很强的成就感。感谢前面的朋友,感谢这次OpenMindClub给的学习机会,也希望能继续学习。
  2. 大学毕业十几年,经常回忆起大学时的学习状态,经常等自习室关灯才回宿舍,疯狂学习各种知识,那种满足感记忆犹新。工作之后,在国有企业待待有点疲惫,但那种学习新知识的热情还是有,去年就一直想参加开智部落的课程,但都由于一些原因没有学成,非常遗憾。
  3. 大学的时候考了高级程序员(非计算机专业),但一直都只是考试的能力,从来没有实践过。工作之后也由于方便需要,通过 pl/Sql developer写Sql操作Oracle的后台数据,别的技能忘记。通过短短几天的学习Python又激发了兴趣。

[liang] 完成 DL101 入学挑战啦

地址

https://github.com/liang0624/DL101

感想

我对NLP领域虽说还不是很了解,在刚开始接触就很感兴趣,希望未来可以从事相关工作。

对于Python,通过这次挑战,也初步掌握了它的基础语法,包括对字符串的处理、字典、列表等数据类型、函数式编程的运用。相信会在今后的学习中越用越熟练。

统计基础不怎么好,这两天对线性回归、贝叶斯推断的学习勉强还能看懂。

学习自己感兴趣的东西一定要坚持下来。

请教一个问题,安装不了nltk软件包怎么办?

家里电脑是mac,公司电脑是windows-64bit。
入学挑战中,应该是要使用python3来处理自然语言,因为python2对字符处理有些困难。那就不能使用mac和windows自带的python2来处理。
nltk处理自然语言包,www.nltk.org上只有32bit的安装文件,没有64bit。

我电脑里安装了jupyter和Spyder,但是不管是使用pip install nltk还是conda install nltk都不成。想问各路大神这种情况下,应该怎么办呢?

misnow完成 DL101 入学挑战啦

  • 入学挑战仓库地址

  • 初触python和深度学习的感想
     作为一枚使用C和C++的入门级程序员,还是将lpthw书中的练习题一个个敲了下来。在练习和为了完成编程实战作业的资料查找中,深深地感受到python语言的“亲民性”。如果把编程看做是盖房子,C基本只提供了最基本的原材料,真正盖房子开始前,需要对原材料进行二次加工,制作成一个个或漂亮或丑陋的组件,以求在盖房子时真正来用。而python更像是提供了各种各样漂亮的组件,等着被筛选后直接嵌在房子的骨架里。Paul Graham在《黑客与画家》一书中称python是一种胶水语言。也正是这样的特性使得python更利于解决一些复杂问题,让使用python的人聚焦与解决问题上,而不是聚焦于代码组件的构建上。

     在完成入学挑战的过程中,自己通过google、百度从python的代码库找寻材料,再将这些材料粘合起来,基本功能实现,只是代码距离漂亮简洁还很远。希望在深度学习的课程中,能一步步掌握在python代码库中选材的技能,初探深度学习的神秘,也获得一份深度学习领域的导航地图。非常期待自己在开智的第一门课~

陈济一 完成 DL101 入学挑战啦

1.仓库地址

2.练习部分
之前在外地跑事情,没有带电脑,报名后以为入学测试是27号前完成,昨天在高铁上收到了短信。
晚上继续写了ex15/ex16 /ex17(有点感慨)

3.挑战部分
一开始,对于咋么完成比较茫然
浏览 issue中同学作业后
发现 解决方式有:列表、字典、bigram(搜索了下,有看到代码,但还是不太会用,就放弃了这个,毕竟时间紧)
浏览了Learn Python the Hard Way中字典一章,觉得有点繁复

决定从问题本身入手
搜索了“二元词组+python",看到一些方法,自己理解的逻辑是将独立的词前后两两合并,在新构成的词中筛选
参考了一些小伙伴的代码
写了代码
完全是现学现卖
*换行符部分 参考知乎中一个答复,但报错了,就先还是按小伙伴的来了。
*网上有搜索到统计频率的一个命令,试用了下,报错,还在研究怎么让它生效。

JIANG09完成DL101入学挑战啦

仓库地址:
1.Python前42个练习:https://github.com/JIANG09/Learn-Python-the-Hard-Way.git
2.计算二元词组频率:https://github.com/JIANG09/Deep-Learning-challenge-2.git

感想:
感想实在很多。作为毫无编程经验的文科小白,啃了LPTHW前40个练习。感觉这40个练习并不是很难,还是可以理解运用。
看第二题的第一眼就很懵,从开始懵到现在。于是发了一个issue希望的得到解答。后来实在等不急了,就看了各位同学的作业,然后找了几份感觉比较简洁能大概读懂的代码,一行一行的死磕,看不懂的函数或者符号就上网查,同时Python练习也在跟进,这样看下来,大概是懂了大半,虽然一些细节上还是不是很懂。
思路大概清楚了:先除去标点,再用split()把文章分成一个词组的列表,然后组成“w1+空格+w2” 的形式组成二元词组,最后用Counter里面的most_common()算出频率最高的前10。于是磕磕绊绊终于写完,但是在输出的时候是中文乱码,又仔细上网查了为什么是中文乱码以及怎么解决,但是结果还是没能正确输出中文(会继续弄清这个问题)。
结果不是尽如人意,和小伙伴们的差距也很大,作业做得吃力,但是平心而论自己也尽力了。4天之内搞定了Python的前40个练习,这一点还比较欣慰。但是后一个作业吃力,是因为之前从来没接触过。感觉这门课将会是一个巨大挑战。但是自己一直有个巨大的心愿就是do something cool, 自己感觉要补的很多,但是一定会尽力而为。
最后想请教一直在考虑的问题:1.之前没有上过开智的其他课程,需要其他课程作为基础吗?还是尝试直接上这个课程?
2.如果不适合这个课程,那有没有应该作为基础学习的书或者课程?我可以先自学或者参加其他课程,先做准备。
3.github 和git都用的不熟练,有没有推荐的运用指南?

入学挑战思路和问题

我还在下载软件中,但在看入学挑战时,有一个隐藏在task里的重大问题,我看前面的同学都没发现。
1)我看了一下原文件,虽然有空格,但是词语区分的并不是按照完全按照自然语言区分的。像下面一句话:“我见 过 的 一张 张 脸孔 , 斑斑 懦弱 , 点点 愁怨 。”至少我会按照,“我 见过 的 一张张”来区分。以此来推断,还是要先合并,而后用jieba分词来做预处理。
2)仔细来看,这个原文件中有3个部分。第一部分《幸福之路》有章节重复的现象。大概是前面2-9章有重复,它的分章节技巧可以使用幸福之路来进行索引,切片。第二部分是《悠闲颂》则不然,每一章的标题不同。而章节和章节之前区别,有的是用大写中文序词,有的是阿拉伯数字。这部分则不能使用特定的词语来索引。第三部分又是幸福之路。但和第一部分的内容完全不同。也有“幸福之路”做索引。这就变成了很复杂的任务。我的想法是首先用“幸福之路”索引,将文章切片。然后还需要手工将重复的部分替换。但如何依靠机器来替换重复的部分,还没有想好。

我还没有学会怎么整程序,思路我是这样想的。
思路是用python3,而不用python处理中文字符,因为python2要decoding然后encoding。要用nltk软件包。需要先用程序把重复的段落消除之后,再进行后续操作。
1、使用jieba程序分词。然后用string指令把前后两个词连接在一起。
这样,如果有逗号,就会出现“xx,”这样的形式。这自然克服了前后两句连接而成的缺陷。将前后两个词连接在一起之后,使用判断语句,看这个word是不是4个字。
2、但这也可能出现1+3或者3+1的情形。使用方法是在word4个字的集合中,再次使用jieba分词,看前后是不是2+2的形式。如此,之后,集合就干净了。这时候再来统计频数即可。

_Tan完成入学任务

任务&感想

任务
自己不太能独立完成...在看了几个同学的代码以及自己写以及调试后,真的觉得十分有必要用最小步骤来完成任务——

  • 读取文件
  • 去符号
  • 加工信息(根据空格分割 slip)
  • 把信息以二元词组的形式加入列表
  • 统计
  • 排序(sorted)

也同样对二元词组的定义有疑惑,不知给出的例子是否就一定代表了二字词以及不含间隔符号?
现在做的是比较泛的,还在琢磨更加精确的做法...
除此之外在看同学们的代码时也学到了很多新东西,非常开心以及非常感谢各位!如果能成功进入的话,估计痛并快乐着估计就是以后的状态了...

LPTHW
至于LPTHW中的练习都是上课的时候写的,有Python2的也有Python3

--

Py103在读,特别小白,比较需要参考其他人的作业...不过还是想挑战一下自己,并且找机会更多地接触、练习。
学习Python主要是因为对这个很好奇,而且个人比较喜欢逻辑性强的东西。而且算是一门新技能,很好:)
还请各位大神们多多指教! :)

周瑞珍 完成DL101 入学挑战啦

  1. 仓库地址

  2. 过程感想:本来以为要分词,后来发现已经分好了。但是换行符没有处理,会导致上一行的末词和下一行的首词被当做二元词组,就模仿原文分词的方法,把"\n"换成" , "。用most_common提取最高频率的10个元素部分,参考了铁屋同学的代码。对python的使用还处于入门阶段,好在利用google,多数问题都能解决。期待课程,虽然会被虐,但相信一定会别有收获。

ruibofeng完成 DL101 入学挑战啦

  • 仓库地址运行结果

  • 学习自然语言处理,目前最感兴趣的主题是情感分析,其实在数据科学入门班的时候就想做这样一个作品:抓取雪球论坛的数据,筛选出对某个主题或某种股票的全部发言,通过情感分析来判断市场情绪。不过当时学的知识感觉还做不出来这样的作品,最终也没做,现在想趁这次学习机会尝试做一个这样的小工具。

[张振玉]完成 DL101 入学挑战啦!

  1. 完成《Learn Python the Hard Way》 前 42 个小练习,如果精力不足,那至少完成前 17 个哦。据统计一般 20 ~ 30mins 就能完成一个小练习,相信你也可以~

见这里 代码 先完成一部分后面再补

  1. 统计这篇 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。「二元词组」即文章中所有接连出现的两个词,如「今天 天气 不错」有「今天 天气」,「天气 不错」两个「二元词组」。

二元词频统计 Python 3代码
Python2 代码

输出

这种情况 77
没有什么 70
这个问题 56
因为他们 54
如果我们 47
这种观点 46
所有这些 44
这个世界 40
他们自己 38
我们可以 37

虽然之前上过数据科学基础班二期 ,工作中使用的较少,也都忘记差不多了。在过程中遇到的问题:

  • 还以为需要分词呢,没想到分好了
  • 中文字符的问题,在python2 中没有解决,为了快速搞定直接使用python3 完成题目了.
  • python 2 的中文编码问题 参考了 00的解决方法

编程还是需要不断的使用,才能够进步,希望以后多多的向大家学习和跟大家不断的交流!

「基于深度学习的自然语言处理」首期课程入学挑战

欢迎你报名内测开智学堂「基于深度学习的自然语言处理」课程!

参加这门课程需有一定基础,如果你想顺利参与这次内测,请在 2 月 24 日 11:42 前完成以下入学挑战哦:

挑战说明

  1. 完成《Learn Python the Hard Way》 前 42 个小练习,如果精力不足,那至少完成前 17 个哦。据统计一般 20 ~ 30mins 就能完成一个小练习,相信你也可以~
  2. 统计这篇 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。「二元词组」即文章中所有接连出现的两个词,如「今天 天气 不错」有「今天 天气」,「天气 不错」两个「二元词组」。
  3. 将上述成果同步到个人 GitHub 公开仓库,仓库名自定。建议你使用 Git 命令同步。

提交方式

  • 在本仓库中新建一个 Issue
    • Issue title 为 [你的名号]完成 DL101 入学挑战啦 ,例如: 云嫱完成 DL101 入学挑战啦
    • Issue 正文包括两部分
      • 含有你上述挑战成果的 GitHub 仓库地址
      • 140 字以上感想,比如希望大家关注/讨论的技术点,或是自个儿的体验点
  • 提交截止时间:2017 年 2 月 24 日(周五) 11:42

其它

  1. 如果你适合参加本期课程,将在 2 月 24 日 24:00 前收到邮件通知正式进入课程学习;如果没能在截止时间前完成,将在 2017 年 3 月 4 日 24:00 前收到沿原支付渠道退还的全额学费。
  2. 对挑战细节有什么不清楚,欢迎在这个仓库发 Issue 提出;挑战过程中遇到困难,欢迎在本仓库发 Issue ,和其他学友交流探讨。也期待你多多在 Issues 和其他学友互动:D
  3. 提交任务后,如果你还有时间,可根据课程参考书提前学习:Neural Networks and Deep Learning(英文版/中文版)

期待你的挑战成果~

nddd完成 DL101 入学挑战啦

第一题:

练习1:第一个程序

In [1]:

print "Hello World!"
print "Hello Again!"
print "I like typing like this."
print "This is fun."
print "Yay! printing."
print "I'd much rather you 'not'."
print 'I "said" do not much this'

Hello World!
Hello Again!
I like typing like this.
This is fun.
Yay! printing.
I'd much rather you 'not'.
I "said" do not much this

练习2:注释和井号

In [2]:

A comment,this is so you can reach your program later.

Anything after the # is ignored by python.

print "I could have code like this." # and the comment after is ignored

You can also use a comment to "disable" or comment out a piece of code :

print "This won't run."

print "This will run."

I could have code like this.
This will run.

练习3:数字和数学计算

In [3]:

print "I will now count my chickens:"

打印小鸡计算的结果

print "Hens:", 25 + 30 / float(6)

打印公鸡计算的结果

print "Rooster", 100 - 25 * 3 % 4
print "Now I will count the eggs:"

打印计算鸡蛋结果,已转换成浮点数

print 3 + 2 + 1 - 5 + 4 % 2 - 1 / float(4) + 6
print "Is it true that 3 + 2 < 5 - 7"

打印3 + 2 < 5 - 7的计算结果

print 3 + 2 < 5 - 7
print "What is 3 + 2 ?", 3 + 2
print "What is 5 - 7 ?", 5 - 7
print "Oh that's why it's False."
print "How about some more."
print "Is it greater ?", 5 > -2
print "Is it greater or equal ?", 5 >= -2
print "Is it less or equal ?", 5 <= -2

I will now count my chickens:
Hens: 30.0
Rooster 97
Now I will count the eggs:
6.75
Is it true that 3 + 2 < 5 - 7
False
What is 3 + 2 ? 5
What is 5 - 7 ? -2
Oh that's why it's False.
How about some more.
Is it greater ? True
Is it greater or equal ? True
Is it less or equal ? False

练习4:变量和命名

In [4]:

cars = 100
space_in_a_car = 4.0
drivers = 30
passengers = 90
cars_not_driver = cars - drivers
cars_driven = drivers
carpool_capacity = cars_driven * space_in_a_car
average_passengers_per_car = passengers / cars_driven

print "There are ", cars, "cars available."
print "There are only ", drivers, "drivers available."
print "There will be ", cars_not_driver, "empty cars today."
print "We can transport ",carpool_capacity, "people today."
print "We have ", passengers, "to carpool today."
print "We need to put about ",average_passengers_per_car, "in each car."

There are 100 cars available.
There are only 30 drivers available.
There will be 70 empty cars today.
We can transport 120.0 people today.
We have 90 to carpool today.
We need to put about 3 in each car.

练习5:更多的变量和打印

In [5]:

my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'

%s 字符串点位符

print "Let's talk about %s." % my_name

%d 整数点位符

print "He's %d inches tall ." % my_height
print "He's %d pounds heavy." % my_weight
print "Actually that's not too heavy."
print "He's got %s eyes and %s hair." % (my_eyes, my_hair)
print "His teeth are usually %s depending on coffee." % my_teeth

this line is tricky,try to get it exactly right.

print "If I add %d , %d, and %d I get %d." % (my_age, my_height, my_weight, my_age + my_height + my_weight)

Let's talk about Zed A. Shaw.
He's 74 inches tall .
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teeth are usually White depending on coffee.
If I add 35 , 74, and 180 I get 289.

练习6:字符串与文本

In [6]:

x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

print x
print y

%r是将内容转换为字符串输出,%s是输出字符串内容

print "I said: %r." % x
print "I also said:'%s'." % y

hilarious = False
joke_evaluation = "Isn't that joken so funny ?! %r"

print joke_evaluation % hilarious

w = "This is the left side of ..."
e = "a string with a right side."

+ 字符串连接

print w + e

There are 10 types of people.
Those who know binary and those who don't.
I said: 'There are 10 types of people.'.
I also said:'Those who know binary and those who don't.'.
Isn't that joken so funny ?! False
This is the left side of ...a string with a right side.

练习7:更多打印

In [7]:

print "Mary had a little lamb."
print "Its fleece was white as %s." % 'snow'
print "And everywhere that Mary went."
print "." * 10 # what'd that do ?

end1 = "C"
end2 = "h"
end3 = "e"
end4 = "e"
end5 = "s"
end6 = "e"
end7 = "B"
end8 = "u"
end9 = "r"
end10 = "g"
end11 = "e"
end12 = "r"

watch that comma at the end. try removing it to see what happens.

逗号在一行显示

print end1 + end2 + end3 + end4 + end5 + end6,
print end7 + end8 + end9 + end10 + end11 + end12

Mary had a little lamb.
Its fleece was white as snow.
And everywhere that Mary went.
..........
Cheese Burger

练习8:打印,打印

In [8]:

formatter = "%r %r %r %r"

print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
"I had this thins.",
"That you could type up right.",
"But it didn't sing.",
"So I said goognight."
)

1 2 3 4
'one' 'two' 'three' 'four'
True False False True
'%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r %r %r'
'I had this thins.' 'That you could type up right.' "But it didn't sing." 'So I said goognight.'

练习9:打印,打印,打印

In [9]:

Here's some new strange stuff, remember type it exactly.

days = "Mon Tue Wed Thu Fri Sat Sun"
months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"

print "Here are the days:", days
print "Here are the months:", months

print """
There's something going on here.
With the three double-quotes.
We'll be able to type as much as e like.
Even 4 lines if we want,or 5, or 6.
"""

Here are the days: Mon Tue Wed Thu Fri Sat Sun
Here are the months: Jan
Feb
Mar
Apr
May
Jun
Jul
Aug

There's something going on here.
With the three double-quotes.
We'll be able to type as much as e like.
Even 4 lines if we want,or 5, or 6.

练习10:那是什么?

In [10]:

tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split \non a line."
backslash_cat = "I'm \ a \ cat."
fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""

print tabby_cat
print persian_cat
print backslash_cat
print fat_cat

I'm tabbed in.

I'm split
on a line.
I'm \ a \ cat.

I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass

练习11:提问

In [11]:

print "How old are you ?",
age = raw_input()

print "How tall are you ?",
height = raw_input()

print "How much do you weight ?",
weight = raw_input()

print "So,you're %r old , %r tall and %r heavy." % (age, height, weight)

How old are you ?27
How tall are you ?175
How much do you weight ?126
So,you're '27' old , '175' tall and '126' heavy.

练习12:提示别人

In [1]:

age = raw_input("How old are you ?")
height = raw_input("How tall are you ?")
weight = raw_input("How much do you weight ?")

print "So, you're %r old, %r tall and %r heavy ." % (age, height, weight)

How old are you ?35
How tall are you ?6'22"
How much do you weight ?180lbs
So, you're '35' old, '6'22"' tall and '180lbs' heavy .

练习13:参数,解包,变量

In [1]:

from sys import argv

argv = ("ex13","first","second","third")

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

The script is called: ex13
Your first variable is: first
Your second variable is: second
Your third variable is: third

练习14:提示和传递

In [2]:

from sys import argv

argv = ("ex13","张三")

script, user_name = argv
prompt = '>'

print "Hi %s, I'm the %s script." % (user_name, script)
print "I'd like to ask you a few questions."
print "Do you like me %s ?" % user_name
likes = raw_input(prompt)

print "Where do you live %s?" % user_name
lives = raw_input(prompt)

print "What kind of computer do you have?"
computer = raw_input(prompt)

print """
Alright, so you said %r about liking me.
You live in %r. Not sure where that is.
And you have a %r computer. Nice.
""" % (likes, lives, computer)

Hi 张三, I'm the ex13 script.
I'd like to ask you a few questions.
Do you like me 张三 ?

Yes
Where do you live 张三?
JiNan
What kind of computer do you have?
Mac

Alright, so you said 'Yes' about liking me.
You live in 'JiNan'. Not sure where that is.
And you have a 'Mac' computer. Nice.

练习15:读取文件

In [9]:

file_name = "./ex15_sample.txt"
txt = open(file_name)

print "Here's your file %r: " % file_name
print txt.read()
txt.close()

print "Type the filename again:"
file_again = raw_input(">")
txt_again = open(file_again)
print txt_again.read()
txt_again.close()

Here's your file './ex15_sample.txt':
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.
Type the filename again:

ex15_sample.txt
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

练习16:读写文件

In [10]:

filename = "ex15_sample.txt"

print "We're going to erase %r." % filename
print "If you don't want that,hit CTRL-C(^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file ..."
target = open(filename, 'w')

print "Truncating the file.Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1 : ")
line2 = raw_input("line 2 : ")
line3 = raw_input("line 3 : ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it ."
target.close()

We're going to erase 'ex15_sample.txt'.
If you don't want that,hit CTRL-C(^C).
If you do want that, hit RETURN.
?I'm line1.
Opening the file ...
Truncating the file.Goodbye!
Now I'm going to ask you for three lines.
line 1 : I'm line1
line 2 : I'm line2
line 3 : I'm line3
I'm going to write these to the file.
And finally, we close it .

练习17:更多的文件操作

In [1]:

from sys import argv
from os.path import exists

from_file = "ex15_sample.txt"
to_file = "copied.txt"

print "Copying from %s to %s " % (from_file, to_file)

we could do these two on one line too, how?

input = open(from_file)
indata = input.read()

print "Does the output file exists ? %r " % exists(to_file)

print "Ready, hit RETURN to continue,CTRL-C to abort."
raw_input()

output = open(to_file, 'w')
output.write(indata)

print "Alright, all done."

output.close()
input.close()

Copying from ex15_sample.txt to copied.txt
Does the output file exists ? False
Ready, hit RETURN to continue,CTRL-C to abort.

Alright, all done.

第二题:
from collections import Counter
import codecs

load file

f = codecs.open("happiness_seg.txt","r",encoding='utf-8')
wordList = f.read().split(" ")

genneration dict

c = Counter()

word count

for i in range(0,(len(wordList) - 1)) :
if len(wordList[i]) >= 2 and len(wordList[i + 1]) >= 2:
double_words = wordList[i] + wordList[i + 1]
c[double_words] = c[double_words] + 1

most_words = c.most_common(10)
for i in range(len(most_words)):
print most_words[i][0],most_words[i][1]

输出:

这种情况 77
没有什么 70
这个问题 56
因为他们 54
如果我们 47
这种观点 46
所有这些 44
这个世界 40
他们自己 38
我们可以 37

[赵玉勇]完成 DL101 入学挑战啦

1. 含有你上述挑战成果的 GitHub 仓库地址

https://github.com/chozee/DeepLearning-yuyongzhao.git
其中tuple_count.py是统计元组字数的脚本,附带word原始输入文件;其余的*.py为练习的脚本。

2. 感想
  1. 编程跟理论学习不同,主要是要实践,你以为你明白的东西不经过实践检验没办法做到真正的明白。你总会遇到各种各样的问题,在解决各种各样问题过程中,渐渐的会加深你对所学的东西的理解。学习编程切忌眼高手低,你的大脑告诉你你懂了,其实如果不经过你的手去证实的话,很可能你的大脑欺骗了你,所以编程这门学科,切忌一定要用手证明而不要听你大脑告诉你的。
  2. 对于NLP最想关注的未来的发展趋势、应用场景、比较成熟的应用、存在的问题、学习NLP的一般路径、国内外的一些专业公司情况、以及NLP在人工智能和机器学习中所处的位置。我个人对人工智能和机器学习特别感兴趣,希望下一个公司能做相关的工作并且深耕几年。
  3. Deep Learning是一种学习方法?那么在学习NLP和其他领域有什么优势?
3. 【二元词组】结果

[这种_情况] = [77]
[没有_什么] = [70]
[这个_问题] = [57]
[因为_他们] = [55]
[如果_我们] = [50]
[所有_这些] = [47]
[这种_观点] = [46]
[这个_世界] = [40]
[他们_自己] = [38]
[我们_可以] = [37]

[CarolLei]完成 DL101 入学挑战啦

作业代码地址

代码地址

注: Learn Python The Hard Way已经完整的敲过了前25个练习,就不在这里上传代码了。因为平时编程的实践很少,所以对语法还不够熟悉,编程的思路也锻炼的少,后面的17个练习会在开课前尽快再练习一遍。

作业完成过程

version_1

a) 读取下载下来的文件data.txt
b) 用split进行切割, 将字符串变为列表,其中含有单独的标点和空字符
c) 用len读取显示为“\x”类的中文字符,发现两个汉字的长度为6,于是确立if条件
d) 拼接所有符合长度条件的词组,变成二元词组,依次放入一个空字典中
e) 用sort方法对value进行降序排列,print出前10个value最大的key

用version_1的结果对照了其它已提交作业的同学们的答案,发现我们在统计结果上有微小的差异。我输出的结果是:
#我的输出结果
#这种情况 : 77
#没有什么 : 70
#这个问题 : 56
#因为他们 : 54
#如果我们 : 47
#这种观点 : 46
#所有这些 : 44
#这个世界 : 40
#他们自己 : 38
#我们可以 : 37

#比较主流的其它同学的输出结果:其中的几个二元词组多1-2两个频数

version_1存在的问题:
错误1:我单纯用空格split的时候,如果出现“因为 他们”(中间有两个空格),就会出现[’因为‘,’‘,’他们‘]中间的空元素。这个时候如果用
if len(wordlist[i]) >= 6 and len(wordlist[i+1]) >= 6
这个语句的时候,就会把这个二院词组给错过,所以会少统计。于是我又改了version_2, 为了防止双空格的出现,我觉得有必要把所有空格都去除掉

version_2

a) 用re进行pattern的设置,用findall代替
b) 用codecs加了encoding = utf-8的选项,由\x改成了\u的输出,且直接print .read()后的问件会直接看到中文
c) pattern中添加了u’\u在前面,而不是r’\u,且使用了[\u4e00-\u9fa5]+]的条件

version_2存在的问题:
错误2:我上面的version_1避免了一个问题,即如果说源文件data.txt里面的标点符号不是左右都有空格的话,split以后就会出现这种情况:“因为, 他们”会变成「因为, 他们」,当然这样就会形成一个新的二元词组,是“因为,他们”,它不可能被统计进入「因为 他们」 这个二元词组。
不过事实上,跨越标点符号的这种类型的词组本来就不应该被统计,但是我在修改成version_2以后,用findall语句的时候,”因为 , 他们” 会被我处理成「因为 他们」而计入统计,其结果是频数又过多,果不其然,我的输出结果,不但数量增多,而且连二元词组都换了几个:
#输出结果
#这种情况 : 77
#没有什么 : 70
#这个问题 : 57
#因为他们 : 55
#如果我们 : 50
#所有这些 : 47
#这种观点 : 46
#这个世界 : 40
#但是如果 : 38
#他们自己 : 38
#可以很明显的看到,“但是,如果”这种二元词组的增多,还有”如果,我们”这样的二院词组增多,就是由于这个原因(我猜测)

遇到的难题

我的两个版本都从存在问题,就是关于上述问题的解决始终让我比较困扰,还在思考用jieba来解决
总结一下,就是version_1存在错误1,version_2存在错误2,这还只是我想到的确实会出现的问题,可能还有很多我就没有觉察出的问题

新学到的东西

a) 字典的sort方法和lambda函数
b) 代替使用sort方法的Counter容器, 以及其所在的Collections模块
c) 正则化模块re的用法,其中含有findall,match,search等函数
d) re中pattern的各种设置方法,还有r’\u...和u’\u...的区别
e) codecs函数的使用,对于编码变为unicode的理解,包括不同版本的操作系统,mac和windows下不同的编码格式

待继续理解的东西

a) 继续理解编码,辅助codecs还有re模块,对于gbk和unicode还是觉得很混乱,包括encoding和的decoding命令
b) 正则化的pattern条件还需要用的更熟练,不太懂u‘和r’的区别,知道r是raw,u应该是unicode,但是整个mac的编译环境又是unicode?
c) 还有很多同学的代码没有看懂,对于如何优化以节省空间或者时间没有头绪
还应该继续多看看同学们的实现代码
d) \x和\u的len()是不同的,一个是3一个是1,原因为何,我也只是反复print实践出来的
e) jieba module还不清楚具体的使用方式,看到很多同学都用了这个进行重新的分词操作,因为原文件确实存在空格过多的问题
f) 我看到有同学直接用url读取的txt文件,待学习,我是直接下载下来的笨办法

本人基础以及对课程的一些期待

我本科是统计背景,偏文商科,对于传统的统计方法和计量内容都有过系统的学习。我曾经在Coursera上以98%的成绩完成了Andrew Ng 在 Stanford 开设的 Machine Learning 课程,觉得有很大的收获,其中的作业我是用Octave完成的。那个课程以定性的练习为主,每个章节后面的编程内容都有很多的提示,所以处理起来不太难。
特别认同阳老师提出的[元认知]概念,在做这个作业的过程中发现自己效率低下,经常会觉得思绪很混乱,解决问题就像使用一个不断向上递归的函数,反复翻到上层去查找相关知识,可以说比较痛苦。苦于自己的编程基础和计算机知识,又缺乏编程实践的环境,总觉得缺乏一种关于学习的学习方法。深感自己在编程上面不太开窍。唯一值得欣慰的是,作为学生还有较充裕的时间。再说说期待吧:

a) 希望这门课能够授人以渔,不管是编程方面的(尤其希望自己能在这方面有所突破),还是机器学习本身的知识方面的。
b) 希望能多推荐一些自学的链接,在整个课程中能突破阅读英文一手资料的心理障碍(感觉英语水平够了,但是一直没有这个习惯)
c) 希望能有很宏观的架构地图,包括NLP的发展路径,如果能推荐一些经典文献阅读学习就再好不过了
d) 将来自己是有意向从事这方面的一个研究,可能跨学科这样,所以希望能从这门课中更进一步了解自己的兴趣和能力

[赵晓鹏]完成 DL101 入学挑战啦

1.代码地址
https://github.com/ZhaoXiaopeng1979/OpenMindFollower

输出结果:
这种情况 : 77
没有什么 : 70
这个问题 : 56
因为他们 : 54
如果我们 : 47
这种观点 : 46
所有这些 : 44
这个世界 : 40
他们自己 : 38
我们可以 : 37

2.感想
春节前原本准备报名开智python基础班的,咨询过一休哥后,得知基础班的上一期已经错过了,下一期要到四五月份,有点儿等不及。而最近开课的编程课程就是我们的“深度学习”,没学好python就直接搞深度学习,惶恐。按照《笨办法学python》中文版,从头到尾敲了一遍代码,了解了个大概,就到了深度学习的报名时间。不管了,先报再说,努力过就好。看到第二个挑战题目,纠结了两天摸不到头绪,直到有同学完成挑战,犹豫要不要偷看一下呢,算不算作弊呢。最终决定,参考、搞懂并实情相告,如果因此被淘汰,那也没有遗憾。

不过,看了几个同学的代码,发现有些搞不懂,有些运行不通,或者运行通了结果不满意,直到看到[00]同学的代码,哇,思路简洁输出清晰。当然不能原封抄,按照自己能理解的方式改写一下,再精简一点儿,起码换换变量名,就是现在的代码了。如果有时间,再继续优化吧,最后感谢前面完成挑战的所有同学,特别是[00] :)

dailu 完成 DL101 入学挑战啦

作业

代码:
https://github.com/dailumail/DeepLearningStudy

我的理解是,分词应该是去除标点符号和单字,只包括两个字以上的词组。

运行结果:
python calc.py happiness_seg.txt
这种情况:77
没有什么:70
这个问题:57
因为他们:55
如果我们:50
所有这些:47
这种观点:46
这个世界:40
他们自己:38
我们可以:37

感想

看了看大家的代码,感觉大家的python和语言处理水平都很高,掌握很多python库函数,代码看起来简洁很多。我的python还处于初级水平,有的功能(例如统计词频)还是自己写的(苦逼脸),却不知道有工具直接就能实现。

提升空间还很大~~~

看书

下面去看推荐的参考书。

同时也推荐一下吴军(Google语言处理专家)的《数学之美》,我正在看这本书。它从信息论角度解释了语言处理的原理,有基本原理,也有数学公式,非常棒。目前的感悟是,人工智能问题,其实是个概率论问题。

[尉阮杰]完成 DL101 入学挑战啦

代码地址:
https://github.com/cutebomb/DeepLearningStartUp

感想:
本人对NLP这个领域挺感兴趣的,开智学堂的课程的设计实践性应该挺好的,最后是要实现一个问答系统呢。再有一点小小的希望就是可以提供一下整个NLP领域的survey,可以让大家以后有什么问题不明白,可以把课程老师教的东西拿出来当做寻宝图来看一看,要找什么东西的设计或实践会就会比较有方向。另外呢,自然语言处理方向上,应用Deep Learning的方法,目前还有哪些问题点,是暂时还存有问题的,还有未解决的问题老师也可以介绍介绍,说不定学堂里未来就出现几个学术大牛能把这些问题解决一部分。特别是关于中文NLP的问题,应该是有一些特别的地方的,国外的研究机构不一定花大力气关注,这些地方可能会是国内深度学习技术的突破点呢:)

洋葱头完成 DL101 入学挑战啦

仓库地址:
https://github.com/Zwiebeln/Python-bungen

输出:

➜ lpthw python dualWordList.py
这种 情况: 77
没有 什么: 70
这个 问题: 57
因为 他们: 55
如果 我们: 50
所有 这些: 47
这种 观点: 46
这个 世界: 40
他们 自己: 38
我们 可以: 37

感想:
之前几周还在十分怠惰地复习期末,22号考完试当晚就开始精神抖擞地抓起本子学python。自己选择的事+截止日期果然是拖延癌晚期的万灵药。
解析题目:
原文里词语乍看是被分好了,但还是有一些分词和我作为人类第一反应的切割方式不同,比如”一张 张“,”多种形式“, ”不敢肯定“。 不过我现在也还不了解自然语言,不知道这是不是那个圈子的行规。对这个问题我的下一步计划是:

  1. 上网了解一下自然语言。
  2. 看看别的同学对此的想法和他们的解决方案。
  3. 查看其它中文分词方式,如 jieba(https://github.com/fxsjy/jieba) THULAC(http://thulac.thunlp.org)。
  4. 改进代码。

对于Python:
第一次接触Python,相比于Java,确实抽象层级更高,简化了很多语法。比如省略分号,以及用缩进取代{}。由于时间有限,教程目前只完成了第17个,东一区27号零点之前要做完前42个。

最后说一个新年愿望:愿世界不再有时差之分,愿你们的deadline,也是我的deadline。

yanting完成 DL101 入学挑战啦

python入门,自学一段时间
代码仓库地址:https://github.com/Lilyfodata/ghio

Title:1、完成《Learn Python the Hard Way》 前 42 个小练习

  • 对所有代码做了测试,修改;
  • 查阅资料、阅读代码;

Title:2、统计 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。

  • 解决思路 :
    • 参考:python自然语言处理
    • 理解:【二元词组】并不是两个字的词组,也不是四个字的词,而是文章中连续出现的相邻的两个词(英语中的词word更好理解)。
    • 分析:“文章”中的内容已经做了分词处理,省去了对中文内容做分词的操作。python处理自然语言,借助nltk。
    • 解答:代码在nltk_str.py。(安装nltk和nltk_data特别费时,结果还没有得出,不知对错)
      解答的步骤:
      首先逐行输出“文章”内容,并删除每一行首尾的空格以及将标点符号替换成空格;
      在将每一行分割出list,最终合并list;
      最后,使用nltk,统计出【二元词组】出现的次数和频率。

感悟:网上资源很丰富,多搜索;
:跟别人交流更能事半功倍。

浚宇完成 DL101 入学挑战啦

作业

一、完成《Learn Python the Hard Way》 前 42 个小练习,如果精力不足,那至少完成前 17 个哦。据统计一般 20 ~ 30mins 就能完成一个小练习,相信你也可以~

ex1-17:py103在读,前17个练习已经完成。

二、统计这篇 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。「二元词组」即文章中所有接连出现的两个词,如「今天 天气 不错」有「今天 天气」,「天气 不错」两个「二元词组」。

代码地址

感想

实践记录,还需要补充。
一开始看题目懵了,感觉自然语言处理这么需要算法基础的作业,估计门槛比较高。限定了困难级别,大脑都不转了。看了一下大家提交的作业,突然开窍,其实还是利用《怎样解题》的思路,分析,了解知识点,解决问题,回顾。
数据结构化py103已经实践过,数据清理,组合词组,计算词频,google大法好,自己还是能解决问题的。看到好多熟人交了作业,自己会持续优化代码,很多人的代码更简洁,还考虑到了效率问题,自己继续努力。

改进

对二元词组的理解不同会得到不同的答案,自己的理解是词组中的词可以是一个或多个汉字,应该再尝试一下仅保留两个汉字的情况,测试一下。

[Corey] 完成DL101入学挑战啦

  • 代码地址

  • 结果:【不知道对二元词组的理解是否有问题 😢 】
    image

  • 感想
    目前正在参加Py103课程,最近一直加班,已经有些没有跟上。周末晚上赶紧做完DL101的练习题目,希望不要在以后的学习上落下来。开智的课程对提高个人学习能力有非常大地提高 😃 ,希望在这个课程中结识更多的小伙伴,一起学习充满迷人的NLP

[VANXV]完成 DL101 入学挑战啦

Title:(简要描述你的问题)
代码在这里点我

  • 解决思路 1:分组,字符大于2的填入字典,排序,找最大的排序
    输出结果:
    这种 情况 : 77
    没有 什么 : 70
    这个 问题 : 57
    因为 他们 : 55
    如果 我们 : 50
    所有 这些 : 47
    这种 观点 : 46
    这个 世界 : 40
    他们 自己 : 38
    我们 可以 : 37

Yin完成 DL101 入学挑战啦

仓库地址

Learn Python the Hard Way 以前就开始断断续续在做,仓库里放了部分练习的代码。

python的水平基本是小白,完成代码基本靠google 🙈

入学挑战用了开智科普过的jieba分词,同时也大量学习了童鞋们的成果😂 。里面比较tricky的地方大概是要把空格去掉。标点符号貌似jieba分词的时候自动就帮我去掉了。

略困惑的一个点是,标点符号本身就表示语义的分隔或是终结,既然上下两段没有联系,统计的时候联起来看好像也就没有意义了。(不过这些肯定也不会出现在高频里,所以就pass吧)

目前主要是兴趣多一点,先学学看~ 期待DL的学习之路。

[feihongla]完成DL1O1入学挑战

1.Learn python the hard way#练习#
2.二元词组计数排序#仓库地址#

感想:我是一名设计师,只在网页设计时了解过一些javascript,所以这次挑战算是小白级入门。在大概一周时间内尽量了解和熟悉了python的编程规则,但实践运用仍有欠缺。
对于任务二,我的思路首先是去除标点和对其进行分词,后来发现文章已作了分词且无标点符号,所以关注点就在于如何运用python的规则对其分类排序。
我参考了其他同学的做法,和后来在《learn python the hard way》了解到了“字典”的概念,才有所思路。所以开始的关键是建立存放这些二元词组的字典,然后再对其进行排序。
而排序我Google到的有sorted和counter两种参数,所以计数和排序就会有两种逻辑。由于counter和字典的结构相似,最后代码更简洁了。

通过快速地大量学习,算是入门了这个语言。当然其他同学大神的解决问题视角,真是大大开阔了我的思路~期待课程的开展,也望能跟上大家的脚步。

「基于深度学习的自然语言处理」首期课程入学挑战 #2的问题

Title:对于挑战2 要如何完成不是很清楚。

背景:本人是文科生,粗浅的学习了Python前25个练习。但第二个挑战不是不是很清楚要如何进行。感觉应该是和统计学相关,看了已经提交的作业代码,但是自己怎么写代码还是没有头绪。

  • 我期待实现的效果/欲达成的目的是:希望各位教练能够提供指导,以便找到解决的办法和思路。

十分感谢!

柳白猿 完成入学挑战啦

代码地址

感想:
因为之前有上过数据科学班和Python基础班。LPTHW的代码就不重复提交了。
Python课错过后等了整整一年,这门课也等了半年才等到。所以即便收到暖暖的建议——最好先专注Python、减少认知负荷——还是毅然想要上这门课。
一来是之前查了童牧晨玄的资料,感觉是位特别有趣的先生。
二来课程中的各位同学,很多都是熟面孔了,既然大家都是从同一起点开始,我就不能再拿「少壮不努力」来当借口,逃避每一次挑战。
三来发现了很多「大腿」,光是看他们的代码,揣摩其中思路,就让我受益非浅。

这门课我可能很难像其他同学一样徒手撸代码,但我给自己的最低要求是完成每周作业并且理解每一行代码的意思。那就开始吧。

zero 完成 DL101 入学挑战啦

Task 想法

  • Task1:很早就做过前 42 道题练习,稍后再放
  • Task2:代码与结果

预处理

源文件有较多以下问题,故最终输出结果与其他学员可能不一致

  • 源文件除了有很多空格外,还有很多回车行,部分制表符
  • 全角与半角字符混合
  • 前九章存在重复

感觉可能还有其他问题。。。

结果处理

  • 基于数据分析考虑,使用的工具是 Jupyter NotebookPython 3.5.2 ,不知道之后的课程使用工具要求是哪样

  • 「二元词组」定义,我默认是每个词长度大于 1 ,词组不包含数字、符号与非法字符,但不知实际要求是怎样

课程想法与疑问

  • 「二元词组」在中文 NLP 技术中承担的角色有多大
  • 现有 NLP 主要流派分析有哪些,感觉目前都以英文文本为主,实际上适用于中文的有哪些呢?

[曾健生]完成 DL101 入学挑战啦

1.代码地址:

https://github.com/newjueqi/DeepLearningStartUp

输出结果:

[["这种情况", 77], ["没有什么", 70], ["这个问题", 57], ["因为他们", 55], ["如果我们", 50], ["所有这些", 47], ["这种观点", 46], ["这个世界", 40], ["他们自己", 38], ["我们可以", 37]]

  1. 感想

现在的网络小说和公众号的心灵鸡汤都是套路,精品太少,感觉是换了人名,换了地点和背景又是新的。

既然文章已经高度雷同了,为啥不能使用人工智能来生成,就算是生成的作品质量比起写手写的差又有什么关系,看网络小说,更多是看寂寞。

当某些领域的文学创作变成了一种高度雷同的堆砌文字的体力活,就不可避免地被人工智能所替代(例如安替老师所提到地使用人工智能生成新闻稿),只有真正能创作真正优秀作品的作者才能存活下来。

鐡屋完成 DL101 入学挑战啦!

完成说明

  1. 代码已上传在我的仓库里。
  2. 因为 Learning Python the Hard Way 去年就完整地做过一遍,所以没有放上。
  3. 我的输出结果如下:
词组:「的 人」 频率:930
词组:「他 的」 频率:503
词组:「自己 的」 频率:480
词组:「上 的」 频率:356
词组:「他们 的」 频率:335
词组:「人 的」 频率:293
词组:「的 时候」 频率:261
词组:「就 会」 频率:225
词组:「的 东西」 频率:207
词组:「都 是」 频率:206
[Finished in 0.3s]

心得

  1. 用时大概2~3小时,比我预想的短很多(我本以为要用到 jieba 分词),而且写代码时进入「心流」后时间过得极快。
  2. 用了 with open("happiness_seg.txt", "rt") as textfile: 来打开文件,这样不必再次关闭文件。
  3. 因为文本本身已经用空格分好词,所以我先用 replace() 去除标点符号再使用 split() 将文本转换成列表,还有其他方法,例如使用 translate(),但 replace() 的速度更快。
  4. 用了 for 循环和 append() 来组合「二元词组」,本来想用递归函数,但似乎 Python 对递归函数的支持非常弱。
  5. 统计词频参考了 Python3-cookbook 1.12 序列中出现次数最多的元素,比起使用字典按照 value 排序的方法提升了很多效率。

问题

  1. 写了一个组合「二元词组」的递归函数,但对于元素个数1000以内列表可用,更长的列表不行。我瞎猜测是因为 Python 对递归函数的支持太弱。
output_list = []
def combine_short (input):
	# a recursive function but only workable when input list is not too long
	global output_list
	if len(input) <= 1:
		pass
	else:
		output_list.append(input[0] + input[1])
		combine_short(input[1:])

[00]完成 DL101 入学挑战啦

代码地址:https://github.com/kidult00/2017.OM.DL

感想:

虽然上过 Python 一期,但是久不写代码又生疏了好多。参考了尉阮杰Corey 两位同学的代码完成了作业。过程中遇到的问题:

  1. 开始以为要用 Jieba 分词工具,看了一下文档,开始做以后才发现词已经分好了
  2. 文件读写和编码问题,在 terminal 中调试时无法显示中文字符,后来用 codecs 模块解决
  3. 对二元词组的理解问题,一开始以为是单个单词的词频统计,后来才反应过来应该是两个邻近词组
  4. 重新复习了一下数组和字典,之前忘得差不多了囧
  5. 字典排序卡了很久,参考同学们的代码以及学习 Lambda 表达式的用法 后解决

作业难度比想象中要大。自己的编程和统计基础都不好,最近工作又特别忙,希望在课程中多跟同学们交流,能坚持下来。

zhaoyu 完成 DL101入学挑战了

1、挑战任务编程代码
DL101-代码

统计结果:
二元 词组 个数 频率(每10000二元词组)
这种 情况 77 12.4734736194
没有 什么 70 11.3395214722
这个 问题 56 9.07161717776
因为 他们 54 8.74763084998
如果 我们 47 7.61367870276
这种 观点 46 7.45168553887
所有 这些 44 7.12769921109
这个 世界 40 6.47972655554
他们 自己 38 6.15574022776
我们 可以 37 5.99374706387

因为对二元词组的理解不够,最后还是找了最简单的办法。苦战一晚,效果一般。还得加紧。
原先一直在用foxpro处理dbf数据库这样很简单的工作,看phthon还是需要努力。为了完成挑战任务,看到了练习39,也来不及输入代码。只能编干编学,也参考了其他同学的代码。

吴阳平完成 DL101 入学挑战啦

github代码:https://github.com/wuyangping/DeepLearning/blob/master/src/LanguageProcessing/Exercise_000.py
运行结果:
https://github.com/wuyangping/DeepLearning/blob/master/src/LanguageProcessing/result.txt

感想:
本人是Python新手,有C++编程背景,练习时在中文字符encoding,正则表达式方面走了些弯路,花了不少时间学习。
解析时去掉了标点符号和分隔符之类的非汉字字符,因此两个词之间如果有标点符号或者换行,则不会被统计。
代码较长,偏C++风格,正在努力学习Python,优化代码,提升效率。
算法方面有一定基础,目前正在看TensorFlow,cs231n,神经网络等方面学习资料。
希望与各位一起学习,成长!

#补充,刚才看了一下其他朋友发的代码和结果,发现统计结果跟我的不一样,可能是我对【二元词组】的理解有偏差,更新代码后统计结果如下:
77 这种 情况
70 没有 什么
57 这个 问题
55 因为 他们
50 如果 我们
47 所有 这些
46 这种 观点
40 这个 世界
38 他们 自己
37 我们 可以

第一版没有比较中文词语的长度,对所有的相邻词频做了排序,结果如下:
-923 的 人
-503 他 的
-479 自己 的
-355 上 的
-335 他们 的
-293 人 的
-261 的 时候
-225 就 会
-207 的 东西
-206 都 是

补充: 《Learn Python the Hard Way》 的 42 个小练习在1月份已经完成,代码尚未整理。

jelly 完成 DL101 入学挑战啦

入学挑战任务地址

含有挑战成果的 GitHub 仓库地址

感想

上周五抓住仅剩的少数名额,紧赶慢赶上车了,这一周就在“哇,好有意思!”和“天哪,好难!”中度过。每天晚上7:00-12:00都在《笨办法学python》中奋战,花费30+小时。大一的时候学过一点C语言,因此看到python的一些语法时,还是能较快理解,不会太过困难,但几年的时间把基础都丢光了,对于需要记忆的一些函数库、用法却十分陌生,经过一周的奋战,python也才是入门水平。

  • 第一项挑战,本想努力完成全部47个练习,因为时间限制只完成了32个。
  • 第二项挑战,刚看到时完全无从下手,看了issue中老师的解答以及其他同学的作业后,明白了算法模式,但对于函数库了解较少,还是很难自己完成,因此在网上教程以及其他同学作业的基础上,基本是看完后抄了一遍,实在惭愧。

作为一个月前python负基础的学员,看到其他参加过python班的学员很快就提交了入学挑战,压力还是很大。无论能否最终参加这门课程,这周的规律、密集型学习都对我启发很大,这种学习的状态正符合我的新年词汇“规律”,果然内心驱动才是王道啊~

[Joycici]完成 DL101 入学挑战啦

代码地址

《Learn Python the Hard Way》前42个练习
出现频率最高的前 10 个「二元词组」

心得/体会

一直对NLP领域感兴趣,却找不到进入的方法,希望借助本次课程弯道超车~

希望大家关注/讨论的技术点
如何更好的理解语言,如何让机器更像人,在人机对话方面,如何将某个人的语言风格应用于整个对话?

本次练习的体验点:
看到题目觉得最难的地方居然是,如何理解题目中的「二元词组」,纠结了好久是[我 是]这样的算不算,[*** 雄伟]又算不算,最后决定按最小行动跟随题目的例子按两个字两个字的算...

对于Python,虽然看起来会用但是也是真的没写过多少,希望在课程结束的时候能够写的更加顺手。
自己写完的代码运行起来之后感觉有点慢,课程中间要多参考大家的结果,三人行必有我师,加入学习组后就会有更多的师,真是非常期待。

练习结果

这种 情况 77
没有 什么 70
这个 问题 56
因为 他们 54
如果 我们 47
这种 观点 46
所有 这些 44
这个 世界 40
他们 自己 38
我们 可以 37

Scott 完成入学挑战啦!

代码:

之前有敲过笨方法,另外用 Python 有近一年了,所以这部分就不放了,二元词组统计代码在此:
bigram_counts

思路:

  1. 每句做成单独的组块,以标点符号作为 str 分割
  2. 把 str 切分成二元词组
  3. 统计词频

问题及解决历程:

  1. 看到挑战头脑理了下思路,首先感觉最大的问题是如何把 str 切分成二元词组,用英文 bigram 谷歌搜索之后找到了 这个答案,这个列表推导非常简洁,于是就直接拿来用了。
  2. 解决切分问题后,接下来是标点符号的问题,若是英文符号,处理起来很方便,而中文用的全角标点,经过一番谷歌搜索找到了这个 Zhon包,工作中用 re 包也有段日子了,所以这个就简单了。
  3. 最后参考了铁屋推荐的 1.12 序列中出现次数最多的元素 — python3-cookbook 2.0.0 文档 统计词频,大约耗时 2 小时左右解决了问题。

心得:

  • 谷歌大法好;
  • Python 有很多优美的写法,还得深入研究。

[gaofqmt]完成DL101入学挑战!

  • 入学挑战仓库地址

  • 重要的不是你有多么努力,重要的是作为一个独立的个体能够提供的究竟是什么。

  • 但是深感自己在面对交付时的无能为力,要以此课程为起点提高自己的交付能力。

  • 很期待在开智的第一门课程

[zj05409]完成 DL101 入学挑战啦

我出生于山西省河曲县,本科和硕士就读于北京邮电大学,毕业后进入百度成为一名JAVA程序员,先是从事Web开发工作,后转为分布式系统开发,现在对人工智能感兴趣,期待未来能从事相关的工作,故报名参加开智的课堂。我业余时间对心理学感兴趣,是开智部落第二期通识部落的成员。

作业仓库地址

https://github.com/zj05409/DL101

心得体会

入学挑战完成过程

拿到入学挑战说明之后,我确定了总体的挑战步骤:

  1. 巩固Python语法——上周刚好练习了LPHW的前20题。
  2. 理解题目并确定解决思路——主要分为以下步骤:
    1. 从网上下载happiness_seg.txt
    2. 打开文件并逐行处理,将文件转换为:词组+出现次数的二元组
    3. 从二元组中选出Top10
    4. 输出结果
  3. 写代码并调试
  4. 重构代码,优化代码风格

完成过程中积累的知识&技能

  1. 网络和文件处理的代码片段:

    1. web文件下载:
    urllib.urlretrieve(fileurl, filename)
    
    1. web文件直接读取
    f = urllib.urlopen(fileurl)
    lines = f.readlines()
    for line in lines:
        print line
    
    1. 本地文件读取
    my_file = pathlib.Path("/path/to/file")
    if my_file.is_file():
        # file exists
        txt = open(filename)
    

遇到的难题

  1. 从文章中提取所有的词组,但是不包括标点

    1. 正则提取,结果带乱码,另外可能把中文中包含的英文和数字去掉,pass:
    wordReg = re.compile("\w+", re.UNICODE)
    re.findall(wordReg, line)
    
    1. 正则替换,去掉标点,正则表达式来自How to remove Chinese punctuation in Python - Stack Overflow,但是做了两处修改:一是去掉了\s,一是加上了―(―是破折号的一部分的半角字符,是程序调试中发现的)
    chinesepuncreg = ur"[\.\!\/_,$%^*(+\"\']+|[+——!,―。?、~@#¥%……&*():;《)《》“”()»〔〕-]+"
    line = re.sub(chinesepuncreg, "", line.decode("utf8"))
    
  2. 从计数结果中取出top10

    1. 结果整个排序,考虑到只需要取前10,感觉没必要,pass
    2. 维持个最小堆,遍历每个元素并修改堆,感觉10个元素的堆太小,有点小题大做,pass
    3. 十次循环,每次选出最大值后删除,因为只需要选前10,所以算法复杂度不会太高,就这样完成了

[13space]完成 DL101 入学挑战啦

作业

一、完成《Learn Python the Hard Way》 前 42 个小练习,如果精力不足,那至少完成前 17 个哦。据统计一般 20 ~ 30mins 就能完成一个小练习,相信你也可以~

ex1-17:

二、
统计这篇 文章 中,出现频率最高的前 10 个「二元词组」,并输出它们的频率。「二元词组」即文章中所有接连出现的两个词,如「今天 天气 不错」有「今天 天气」,「天气 不错」两个「二元词组」。

练习结果

感想

虽然学过别的语言,但自己的python 基础还是太差,代码质量也惨不忍睹,简直是硬扛的感觉。。
需要多学多练,要不然效率完全上不去
但总之最小行动先把作业交了。我主要还是兴趣派,后面慢慢优化吧。。

[Hans]完成 DL101 入学挑战啦

GitHub代码:
https://github.com/hansyiu/DeepLearningStartUp

运行结果:
没有_什么, 74
我们_可以, 38
所有_这些, 36
任何_一个, 33
这个_问题, 33
产生_一种, 31
他们_认为, 31
这样_一种, 31
一个_孩子, 30
如果_我们, 30

思路:
1.先去掉文本里面的空格。
2.用结巴分词把去空格后的文本进行拆分,并放入一个新的列表里面。
3.for循环列表,判断 “前一个词 后一个词 再后面一个词” 的情况成立(即判断二元词组),
这里假设词的长度都是大于等于2的。
4. 拼接成我们要多样式放入列表。
5. 借助collections 里面的 Counter方法进行统计。
6.打印出结果。

感想:

本来想用strip()去除,后来stackoverflow了一下发现用replace效果更佳。以前没有发现有strip解决不了的事情。
不知道我理解的“二元词组”是否正确,好像和大家的输出结果还是有差异的,而且蛮大:D

练习题还没写完
明天放入Exercise文件夹

yuanyifly完成DL101 入学挑战啦

已经重新上传了作业,地址是:https://github.com/yuanyifly/DeepLearning
结果:
的 人 923
他 的 503
自己 的 479
上 的 355
他们 的 335
人 的 293
的 时候 261
就 会 225
的 东西 207
都 是 206

感想:
  之前搞错了题目意思,所以又重新写了一次,非常惭愧!本人目前是个菜鸟,接触Python 才半个月,这个作业的完成就是个不断试错的过程,完成的代码不精简也不优美,感觉自己学得真是太浅了……但是我对自己的有信心,对这门课程充满兴趣,尤其是有这么多优秀的同学在,也能鞭策自己不能松懈。
  另外今早似乎是网络问题,怎么都进不来Github,所以上传地晚了点,不好意思!

sunoonlee 完成 DL101 入学挑战啦

仓库地址:sunoonlee/OMDL101pre

感想:

  • 感谢开智 py102 的开智功效,从此不甘被乏味的旧工作束缚,想做点有趣的事情。现为准离职状态,方向探索期。
  • 对深度学习毫无所知,大学那点工科数学也早忘完了。原想先自己预习一两个月,又不愿错过这期,所以就赶鸭子上架了
  • 看到好几个熟悉的 ID,包括 Py102/3 的 教练、同学,开智部落学友等,真是无处不相逢。
  • 不用说,这里一定是藏龙卧虎,努力向各位优秀同学看齐!

于耀程完成 DL101 入学挑战啦

  • 代码地址
  • Learn the Python Hard Way 还在进行中。因为会的有限,用了一种比较笨的办法来实现目标,做完发现跟小伙伴们的有出入。做任务的过程遇到了两个问题。一个是在我代码里标记的,在第一步做词典的时候第一次用的代码运行出来只针对文档最后一段,疑惑中。
 with open('happiness_seg.txt','r') as wordsfile:
     for words in wordsfile:
        word = words.split(' ')

第二是,我在考虑如果在处理文档之前就把标点符号去掉是否会出现误差。比如:

转移 自己 思考 目标 的 做法 是 由于 对于 鬼怪 幽灵 的 恐惧 引起 的 , 人 由此 转移 了 自己 注视 的 目光 。

如果事先把逗号去掉,那么“的 人”就成了二元词组了。不知道隔了一个逗号算不算二元词组。我的代码没有把这样的算在内(只是考虑到了,但代码是否实现了没有自信),没有想出更优雅的姿势解决,抛砖引玉,欢迎大家多来讨论。

  • 我是零基础在开智py103学的Python。慧根不足,但日拱一卒,慢慢也会写一点点代码。看见有小伙伴在发issue求助,自己水平有限,帮不上太多,在这分享下做任务的心路历程。看到这个任务首先要明确目标,是统计二元词组。那么先定义好什么是二元词组。接着,文本如何去改造成词典,又如何进一步做成二元词组。再者,如何计数。每一步都有小细节,比如标点符号的去除。我先在心里想象出流程,然后再一点点用代码实现。如果说基础再薄一点,比如,不知道词典为何物(我最开始学就不知道),那么可以先看看小伙伴的代码,对照自己会的,看看哪些节点不懂,然后google一下。看上几个人的代码(最好是思路不通的),把每个不会的节点碎片化,谷歌出来消化掉(其实就是卡片大法)。最后抛开别人的代码,把自己内化的方法拼凑起来,来实现自己的想法,做出来的可能跟之前看的都不同。LTPHW到20多节就有词典的概念了。用这之前学过的能把除了计数意外的做出来。话说计数我也是看别人分享的链接才会的。
    明天继续预习。不知我这样情况的能否通过初选。

[haidao]完成 DL101 入学挑战啦

代码看这里

  • 不需要分词
  • 应该移出标点符号,并按照语句划分块,不应该存在跨语句的二元词组。UTF8没找到比较好的标点符号的正则范围,所以可以考虑使用黑名单过滤标点符号,并按照特定的标点划分语句块(逗号,句号,分号等)
  • 速度比较慢,sort 的时间复杂度是 nlgn,但题意要求只需要输出前十个,事实上时间复杂度可以压到 n 的,代码上需要稍作处理
  • 可以考虑剔除包含停止词的二元词组,比如的,了等
  • 自然语言处理是个技术+脏活的组合,需要耐心细致和钻研的精神

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.