Javen Chen's Blog

Tech and Life~

这篇文章是我照着《基于N最短路径方法的中文词语粗分模型》这篇论文,自己用Python实现了下文中的算法,用于理解原理。

大致思想

考虑到汉语自动分词中存在切分歧义消除和未登录词识别两个主要问题,因此,有专家将分词过程分成两个阶段:首先采用切分算法对句子词语进行初步切分,得到一个相对最好的粗分结果,然后,再进行歧义排除和未登录词识别。
N-最短路径方法就是一种词语粗分模型,大致步骤:

  • 1.根据词典,找出字串中所有可能的词,构造词语切分有向无环图。
  • 2.每个词对应图中的一条有向边,并赋给相应的边长(权值) 。
  • 3.然后针对该切分图,在起点到终点的所有路径中,求出长度值按严格升序排列(任何两个不同位置上的值一定不等)依次为第1、第2、…、第i、…、第N(N≥1)的路径集合作为相应的粗分结果集。
  • 4.如果两条或两条以上路径长度相等,那么它们的长度并列第i,都要列入粗分结果集,而且不影响其他路径的排列序号,最后的粗分结果集合大小大于或等于N。

具体介绍

Read more »

最大匹配分词方法只考虑词有没有在字典中出现,没有考虑词在词典中的频率。

基于统计学的分词即考虑词在词典中的频率的一种简单的分词方法。

注:下面的代码参考snownlp作者的博客http://www.isnowfy.com/python-chinese-segmentation/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import math
import codecs

d = {}
log = lambda x: float('-inf') if not x else math.log(x)
prob = lambda x: d[x] if x in d else 0 if len(x)>1 else 1 # 计算每个词的频次(加入平滑)

def init(filename='SogouLabDic.dic.utf8'):
"""读取字典"""
d['_t_'] = 0.0
with open(filename, "r") as f:
for line in f:
word, freq = line.split('\t')[:2]
d['_t_'] += int(freq)+1
d[word] = int(freq)+1

init()

小插曲:

Read more »

前段时间研究了一段Zero Shot Learning,研究了一些生成模型,总结一下备忘。

关于生成模型有一个很好的github仓库,而且作者的博客写的也非常精彩。

所谓生成模型,即,给定一些数据,用一个向量$x$表示,每一个datapoint对应一张图片或者一句话,生成模型的目标是学会$P(x)$,有了$P(x)$就可以从中sample,从而生成一些数据。

本文主要总结下GANVAE两种生成模型。

GAN

Read more »

计算CNN输出尺寸

公式:输出尺寸=(输入尺寸-filter尺寸+2*padding)/stride+1

ROC 和AUC

ROC曲线的x轴是伪阳率即$\frac{伪阳}{真阴+伪阳}$,y轴是真阳率即$\frac{真阳}{真阳+伪阴}$。

  • thresh-hold很高,导致全部预测阴,则真阳率为0,伪阳率为0,在坐标点$(0, 0)$;
  • thresh-hold很低,导致全部预测阳,则真阳率为1,伪阳率为1,在坐标点$(1, 1)$;
  • 如果分类效果很好,则真阳率很高,伪阳率很低,接近坐标点$(0, 1)$。AUC即(Area Under Curve),即ROC曲线下的面积。如果分类效果越好,点越接近$(0, 1)$则AUC越大。
Read more »

迁移学习简单地说,首先有个目标任务$T$,目标数据$D_T$数据量偏小,此时有一个相似的源任务$S$,源数据$D_S$相对更充分,迁移学习的目标即如何借助源任务去提高目标任务的效果。

第四范式的罗远升有一篇很不错的文章《迁移学习实战:从算法到实践》,看了那篇文章,你会对迁移学习有个大概的认识。

迁移学习方法分类

根据所要迁移的知识的表示形式(即“What to transfer”),分为以下四大类:

  • 基于样本的迁移学习(instance-transfer);
  • 基于参数的迁移学习(parameter-transfer);
  • 基于特征表示的迁移学习(feature- representation-transfer);
  • 基于关系知识的迁移(relation-knowledge-transfer)。
Read more »

  • 名【数量】+ 动
    意:数量词用在动词前面。
    例:本を 2 買いました。

  • 名【时间】 名【次数】 + 动
    意:表示一定的时间内进行了若干次动作。
    例:李さんは 1週間に 2回 プールへ 行きます。

  • 动词的“ます”形
    例:働きます、休みます、寝ます、起きます。

  • 名【场所】 动 行きます/来ます
    意:表示移动行为的目的
    例:午後 郵便局 荷物を 出し 行きます。

  • 名【数量】+
    意:用于不称重而以数量的形式售物。
    例:この ケーキは 3個 500円です。

  • 数词和量词
    ~冊/~回/~枚/~個/~杯/~人/~台
    ~本/~頭/~匹/~つ/ ~着/~羽/~番
    ~足/~度/~キロメートル/~皿

  • 动词的“て”
    意:
    一类动词:去掉“ます”后的最后一个音位于“い段”的;
    二类动词:最后一个音位于“え段”的,以及位于“い段”的一小部分动词如起きます見ます
    三类动词“します”“来ます”两个动词,以及“勉強します”等使用“します”的动词。
    变换方式:
    一类动词:“ます形”去掉“ます”后加“て”“き”–>“いて”“ぎ”–>“いで”“び、み、に”–>“んで”“ち、り、い”–>“って”“し”–>“して”
    二类动词三类动词:“ます形”去掉“ます”后加“て”
    http://upload-images.jianshu.io/upload_images/1713813-a4184540c807453b.gif?imageMogr2/auto-orient/strip
    https://i.ytimg.com/vi/9kOK3YxpLhU/maxresdefault.jpg

  •  动【相继发生1】
    意:两个以上的动作相继发生
    例:昨日 デパートへ 行っ,買い物しました。

  • てから 动【相继发生2】
    意:两个以上的动作相继发生
    例:昼ご飯を 食べてから 出かけます。

  • て ください
    意:请求某人做某事。
    例:ここに 住所と 名前を 書いて ください

  • 名【场所】 动【经过】【离开】
    意:经过某个场所,使用助词“を”
    例:この バスは 駅前 とります。

  • て います【正在进行】
    意:表示动作正在进行
    例:小野さんは 今 新聞を 読んで います

  • ても いいです
    意:表示许可
    例:家で 仕事を しても いいです

  • ては いけません
    意:表示禁止
    例:飛行機の中で タバコを 吸っては いけません

  • 名【附着点】 动
    意:人和物的附着点,助词用“に”。
    例:李さんは 電車に 乗りました。

  • 名【目的地】に 动
    意:表示动作的目的地时,除了用“へ”,也可以用“に”。
    例:李さんは 病院 行きます。

  • 一类形 一类形【并列1】
    意:两个以上的一类形容词并列使用,用一类形的“て形”,一类形的“て形”是将词尾“い”变为“くて”
    例:ホテルの 部屋は 広くて 明るいです。

  • 二类形 二类形【并列2】
    意:两个以上的二类形容词并列使用,用二类形的“て形”,二类形的“て形”是“二类形+で”
    例:この コンピュータの 操作は 簡単**で **便利です。

  • 名1 名2【并列3】
    意:两个以上的名词并列使用。
    例:スミスさんは 旅行会社の 社員で,部長です。

  • て います 2【结果状态1】
    意:除了表示现在进行时以外,还可以表示动作结束后留下的结果状态
    例:わたしは 北京に 住んで います
      吉田さんを 知って いますか
      いいえ,知りません。

  • 小句,小句【转折】
    意:表示两个小句的转折关系,相当于汉语的“但是”
    例:この レストランは おいしいです,ちょっと 高いです。

  • まだ + 动(否定)
    意:表示还没有达到某种程度。
    例:まだ 結婚して いません。

  • 名が 欲しいです
    意:表达愿望。
    例:わたしは 新しい 洋服が 欲しいです

  • 名を 动たいです
    意:相当于汉语“想~”。
    例:映画を 見たいです

  • ませんか
    意:动词的否定形式“~ません”加上“か”,表示提议
    例:少し 休みませんか

  • 动ましょう
    意:把动词的“ます形”的“ます”换成“ましょう”,可表示提议。
    例:そろそろ 行きましょう

  • 疑问词 + でも
    意:表示任何情况下事态都相同。
    例:李さん,何を 食べたいでか。
      何でも いいです。

  • 一类形 なります
    意:表示性质或者状态的变化“い”变“く”,再加“なります”
    例:だんだん 暖かく なります

  • 一类形 します
    意:因为主语的意志,引起形容词描述的变化“い”变“く”,再加“します”
    例:テレビの 音を 大きく します

  • 二类形/名に なります
    意:表示性质或者状态的变化。
    例:もう 元気に なります

  • 二类形/名に します
    意:因为主语的意志,引起形容词描述的变化。
    例:部屋を きれいに して ください。

  • 一类形/二类形 ほうが いいです
    意:比较两个以上事物的性质,认为其中一个比较好
    例:旅行の 荷物は 軽いほうが いいです
      子供は 元気なほうが いいです

  • 自动词 vs 他动词
    意:自动词是不带宾语的动词,表示动作自主进行。他动词一般有主语作用于宾语。自动词和他动词一般相互对应。
    例:窓が 開きました
      李さんが 窓を 開けました

  • 动词的“ない”
    一类动词:把“ます形”去掉“ます”,最后的音变成“あ”段,再加“ない”。如果最后的音是“い”,把“い”变成“わ”后面加“ない”
    二类动词:把“ます形”去掉“ます”,再加“ない”。
    三类动词:把“来ます”变成“来ない”,把“します”变成“しない”
    http://upload-images.jianshu.io/upload_images/1713813-5d154e9792f75295.gif?imageMogr2/auto-orient/strip

  • ないで ください
    意:表示否定的命令
    例:部屋の かぎを 忘れないで ください

  • なければ なりません
    意:表示必须
    例:李さんは 今日 早く 帰らなければ なりません

  • なくても いいです
    意:表示不做某事也可以。
    例:明日は 残業しなくても いいです

  • 动词的“基本形”
    “ます形”去掉“ます”
    一类动词,最后的“い”段变成“う”段;
    二类动词:加“る”
    三类动词“来る”“する”

  • 名【人】は 动【基本形】 ことが できます
    意:表示能力,肯定的情况下用“できます”, 否定的情况下用“できません”。
    例:スミスさんは ピアノを 弾く ことが できます。

  • 名は 动【基本形】 ことです
    意:谓语的内容是动作。
    例:わたしの 興味は 切手を 集める こと です。

  • 动【基本形】 前に,~
    意:表示一个动作在另一个动作之前发生
    例:こちらへ 来る 前に 電話を かけて ください。

  • 动词的“た形”
    “た形”是把“て形”中的“て”换成“た”

  • 动【た形】 ことが あります
    意:表示过去的经历,相当于“曾经~过”。一般是比较久远的事情。
    例:わたしは すき焼きを 食べた ことが あります。

  • 动【た形】 後で, ~
    意:表示一个动作在另一个动作发生之后
    例:会社が 終わった 後で, 飲みに 行きます。

  • 动【た形】 ほうが いいです
    意:在两种事物中进行选择时,做出的选择。
    例:ホテルを 予約した ほうが いいですが

  • 敬体形 vs 简体形
    意:
    “ます形”
    属于敬体形“基本形”“ない形”“た形”属于简体形

  • 动词简体形
    1.现在肯定“基本形”買う,对应敬体形“ます”買います;
    2.现在否定“ない形”買わない,对应敬体形“ません”買いません;
    3.过去肯定“た形”買った,对应敬体形“ました”買いました;
    4.过去否定“なかった”買わなかった,对应敬体形“ませんでした”買いませんでした。

一类形容词谓语简体形
1.现在肯定:“忙し”,对应敬体形“忙しです”;
2.现在否定:“忙しくない”,对应敬体形“忙しくないです”;
3.过去肯定:“忙しかった”,对应敬体形“忙しかったです”;
4.过去否定:“忙しく なかった”,对应敬体形“忙しく なかったです”。

  • 二类形容词谓语简体形
    1.现在肯定:“簡単”,对应敬体形“簡単です”;
    2.现在否定:“簡単では ない”,对应敬体形“簡単では ありません”;
    3.过去肯定:“簡単だった”,对应敬体形“簡単でした”;
    4.过去否定:“簡単では なかった”,对应敬体形“簡単では ありませんでした”。

  • 名词谓语形式的简体形
    1.现在肯定:“晴れ”,对应敬体形“晴れです”;
    2.现在否定:“晴れでは ない”,对应敬体形“晴れでは ありません”;
    3.过去肯定:“晴れ だった”,对应敬体形“晴れ でした”;
    4.过去否定:“晴れでは なかった”,对应敬体形“晴れでは ありませんでした”。

  • 小句けど 小句【转折】【铺垫】
    意:表转折
    例:昨日の 試験は, ちょっと 難しかったけど, まあまあ できたよ。

  • たり 动たり
    意:表示列举若干种有代表性的动作。
    例:小野さんは 休みの日 散歩したり 買い物に 行ったり します。

  • 一类形かったり 一类形かったりです ** 二类形だったり** 二类形だったりです 名だったり 名だったりです
    意:表示状态或状况有多种可能
    例:飛行機の チケットは 高かったり 安かったりです。
    この 公園は 時間に よって 静かだったり にぎやかだったりです。

  • 小句(简体形)と 思います
    意:表示说话人的思考内容。
    例:李さんは もう すぐ 来ると 思います

  • 名【人】は 小句(简体形)と 言いました
    意:向第三者专属他人说的话。
    例:陳さんは パーテイーに 行くと 言いました

  • のですんです
    意:表示所讲的内容与前句或者前向内容有关,用于说明情况或解释原因“のです”用于书面语“んです”是“のです”的口语形式。“のです/んです”前接简体形,名词和二类形容词的现在将来肯定形中的“だ”要换成“な”
    例:タバコは やめた ほうが いいですよ。
    そうなんですが, やめる ことが できないです。
    すごい 人気ですね。
    ええ, あの 歌手は 日本では とても 有名なんです。

  • 小句 小句【铺垫】
    意:提示接下来说的内容。
    例:東京タワーへ 行きたいです, どうやって いきますが。

  • 另:  找到一张关于动词形态的很不错的图片,还是例子和规则结合记忆更有效。
    http://www.mianfeiwendang.com/pic/40887d106170ec3f039ce8ac/1-670-jpg_6_0_______-1052-0-0-1052.jpg

Read more »

  •  名です
    意:~是~
    例:私は 中国人です。

  •  名では ありません
    意:~不是~
    例:わたし 日本人では ありません。

  •  名ですか
    意:~是~吗?
    例:あなた 中国人ですか

  • 誰(だれ)ですか/何ですか
    意:~是谁/什么?
    例:それは 何ですか。

  • 名は どこですか
    意:~在哪里?
    例:トイレは どこですか。

  •  名です
    意:も代表“也”
    例:あなた 中国人ですか。

  • 名は いくらですか
    意:~多少钱?
    例:これは いくらですか。

  • 名【场所】に 名【物/人】が あります/います
    意:~有~
    例:部屋に 机が あります
      小園に 猫が います

  • 名【物/人】は  名【场所】に あります/います
    意:~在~
    例:いすは 部屋に あります
      吉田さんは 庭に います

  •  名【并列】
    意:相当于“和”
    例:時計 眼鏡

  • 疑问词 + + 动(否定)
    意:表示全面否定
    例:冷蔵庫に 何 ありません。

  • 动ます动ません
    动ました动ませんでした
    意:现在(将来)的动作/否定
      过去的动作/过去否定
    例:私は 昨日 はたらきませんでした

  • 名【时间】 动
    意:表示动作发生的时间,要在表示时间的名词后面+に
    例:私は 7時 起きます。

  • いつ 动ますか
    意:什么时候做XX
    例:試験は いつから 始まりますか。

  • 【对比】
    意:表示对比的时候,は发音略重
    例:小野さんは 昨日 休みます。

  • 名【场所】 动
    意:表示移动的目的地
    例:吉田さんは 会社 行きます。

  • 名【场所】から 动
    意:表示移动的起点
    例:李さんは 先月 北京から 来ました。

  • 名【交通工具】 动
    意:交通工具的助词用で
    例:李さんは 歩いて 会社へ 行きます
      上海へ 飛行機 行きます。

  •  动
    意:动词的对象助词用を
    例:李さんは 毎日 新聞 読みます。

  • 名【场所】 动
    意:动作的场所用助词で表示,区别于存在的に
    例:李さんは 会社 働きます。

  •  名
    意:对若干名词进行选择,相当于“或者”
    例:私は 毎朝 パン お粥を 食べます。

  • を ください
    意:买东西或者点菜时使用
    例:この 本を ください

  • 名【工具】 动
    意:表示手段或者原材料
    例:新聞紙 紙飛行機を 作ります。

  • 名1【人】 名2【人】 名3【物】を あげます
    意:相当于汉语的“给”
    例:李さん 小野さん お土産を あげます

  • 名1【人】 名2【人】 名3【物】 もらいます
    意:相当于汉语的“得到”、“接受”
    例:私 小野さん 写真 もらいました

  • 名【人】に 会います
    意:和~见面,助词用
    例:李さんは 明日 中島さんに 会います

  •  一类形です
    意:日语的形容词分两类,一类形容词以“い”结尾,作谓语是要在后面加“です”
    例:この お茶 熱いです

  • 一类形 作谓语时的否定形式
    意:“い”“く”再加上“ないです”或者“ありません”
    例:この スープは 熱く ないです

  • 一类形 作谓语时的过去形式
    意:“い”“かった”再加上“です”
    例:旅行は 楽し かったです

  • 一类形 作谓语时的过去否定形式
    意:“い”“く”再加上“なかったです”或者“ありませんでした”
    例:昨日は 寒く なかったです

  • 一类形+名
    意:一类形容词可以直接修饰名词
    例:広い 国

  • “を”–>“は”
    意:名词在用作对比或是作为话题时,“を”去掉,用“は”
    例:この本 李さんに もらいました。

  • あまり 一类形/动(否定)
    意:“あまり”与后面的否定相呼应,表示程度不太高。
    例:試験は あまり 難しいです。

  • 常用的一类形容词
    新(あたら)しい
    古(ふる)い
    熱(あつ)い
    冷(つめ)たい
    高(たか)い
    低(ひく)い
    暑(あつ)い
    寒(さむ)い
    安(やす)い
    多(おお)い
    少(すく)ない
    難(むずか)しい
    易(やさ)しい
    大(おお)きい
    小(ちい)さい
    遠(とお)い
    近(ちか)い
    いい
    悪(わる)い
    楽(たの)しい
    広(ひろ)い
    狭(せま)い
    辛(から)い
    塩(しお)辛い
    酸(す)っぱい
    苦(にが)い
    おいしい
    まずい
    面白(おもしろ)い
    つまらない
    忙(いそが)しい
    素晴(すば)らしい
    青(あお)い
    白(しろ)い

  •   二类形です/でした
    意:二类形容词是不以“い”结尾的形容词,做谓语时,要在后面加“です”,过去形式是“でした”。
    例:京都の 紅葉 有名です
      この 通り 静かです

  •  二类形では ありません/では ありませんでした
    意:二类形容词作谓语时的否定形式是“二类形容词+では ありません”。过去形式的否定形式是“では ありませんでした”。在日语里“では”一般说成“じゃ”
    例:この 通りは にぎやかでは ありません
      昨日は 暇じゃ ありませんでした

  •  二类形 名です
    意:二类形容词修饰名词时,用“二类形容词+な+名词”的形式。
    例:奈良 静かな 町です

  • でした
    意:名词作谓语时的过去形式是“名词+でした”,否定形式是“名词+では(じゃ)ありませんでした”
    例:昨日 日曜日でした
      おとといは 休みでは ありませんでした

  • どんな 名
    意:询问人或事物的性质时,用“どんな+名”,相当于汉语中的“怎样的”
    例:横浜は どんな 町ですか。

  • どうですか
    意:询问对方的意见
    例:お茶 どうですか

  • でもそして
    意:“でも”是转折,“そして”是并列
    例:わたしの部屋は 狭いです。でも,きれいです。
      わたしの部屋は 狭いです。そして,汚(きたな)いです。

  • 常用的二类形容词
    好き
    嫌い
    にぎやか
    静か
    便利
    不便
    きれい
    元気
    簡単

    有名

  • 名1 名2 一类形/二类形です
    意:用于表达感情,名1是感情的主体,名2是感情的对象。
    例:小野さん 歌 好きです

  • 名1 名2 分かります/できます
    意:表达“能力”
    例:小野さん 料理 上手です

  •  名
    意:都表示“和”一般列举,只举两个例子。
    例:吉田さん 時々 中国 韓国へ 行きます。

  • “~から”“だから”【原因、理由】
    意:说明原因时的助词
    例:寒いですから お酒が 好きですから,毎日 飲みさす。

  • 表示频率的副词:
    いつも
    よく
    時々
    偶(たま)に
    あまり~ません
    全然~ません

  • どうしてですか
    意:询问原因,相当于“为什么”。回答时谓语后加“から”

  • 名1 名2より 一类形/二类形です
    意:名1 名2
    例:中国 日本より 広いです。

  • 名1より 名2の ほうが 一类形/二类形です
    意:相比 名1 , 名2
    例:日本より,中国の ほうが 広いです。

  • 名1 名2ほど 一类形く ないです/二类形では ありません
    意:名1 名2 更不
    例:東京の冬 北京の冬ほど 寒く ないです

  • 名1の中で 名2 一番(いちばん) 一类形/二类形です
    意:
    例:日本料理の中で 寿司 いちばん おいしいです。

  • 名1 名2 どちらが 一类形/二类形ですか
    意:询问两个事物中哪种更具有某个性质的时候使用。“どちら”是二者选一时使用的疑问词,回答时使用“~の ほうが...”,如果程度相当,回答“どちらも ~です”“どちら”在口语中说成“どっち”
    例:コーヒー 紅茶 **どっちらが **好きですか。
      どちらも いいです。

  • どの 名/いつ/どれ/だれ/何が いちばん 一类形/二类形ですか
    意:哪个“最”
    例:この 中で どの 料理が いちばん おいしいですか。

Read more »

20. Deep Generative Models

玻尔兹曼机(Boltzmann Machines)

我们在d维二值随机向量$x∈{0,1}^d$上定义玻尔兹曼机:

玻尔兹曼机是一种基于能量的模型,意味着我们可以使用能量函数定义联合概率分布:
$P(x) = \frac{\exp(-E(x))}{Z}$,其中$E(x)$是能量函数,Z是确保$∑_xP(x)=1$的配分函数。
玻尔兹曼机的能量函数如下给出: $E(x) = -x^TUx - b^Tx$,其中$U$是模型参数的“权重”矩阵,$b$是偏置向量。
带隐变量的玻尔兹曼机:$E(v,h)=−v^⊤Rv−v^⊤Wh−h^⊤Sh−b^⊤v−c^⊤h$。

https://raw.githubusercontent.com/applenob/reading_note/master/res/rbms.png

Read more »

19. Approximate Inference

推断(Inference)

我们通常使用推断这个术语来指代给定一些其他变量的情况下计算某些变量概率分布的过程。

在深度学习中,通常我们有一系列可见变量v和一系列隐变量h

推断困难通常是指难以计算$p(h∣v)$或其期望。推断在最大似然学习的任务中往往是必需的。

Read more »
0%