欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Python深拷贝与浅拷贝isalpha用法FNLPcoursework

时间:2023-08-17
处理FNLP coursework1 代码时发现: 1、 python和C/C++拷贝机制的不同

python中赋值时进行的拷贝是浅拷贝
要深拷贝需要:

import copyorig_a=a#浅拷贝orig_a=copy(a)#浅拷贝orig_a=copy.deepcopy(a)#深拷贝

2、 isalpha()的用法:

如果前面不加上encode()方法,在判断非英语字符时会失误

string="这是汉字"print(string.isaplha()) #Trueprint(string.encode().isaplha()) #False

3、FNLP部分源码

使用NLP库:NLTK(2.4.5)进行NLP任务,包括N-gram Model的调用,将corpora分解成句子/词语,计算交叉熵等

##NLTK 示例代码from nltk_model import *from nltk.corpus import brownfrom nltk.probability import LidstoneProbDistimport copyest = lambda fdist, bins: LidstoneProbDist(fdist, 0.2)lm = NgramModel(3, brown.words(categories='news'), estimator=est)print(lm)print(lm._backoff)print(lm.entropy(['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', 'Friday', 'an', 'investigation', 'of', "Atlanta's", 'recent', 'primary', 'election', 'produced', '``', 'no', 'evidence', "''", 'that', 'any', 'irregularities', 'took', 'place', '.']))a = [['?', 'A', ':', 'RomanMack6s', 'http://formspring.me/RomanMack6s/q/90468625', 'Name', 'Q', ':', 'Whats', 'Your'], ['a', 'avisen', 'ccs', 'cuando', 'fino', '..', 'hoy', 'llegen', 'lo', 'paso', 'Por', 'q', 'que', '@user2075716'], ['@user10319815', ':', 'お疲れ様です', '。', 'ブログに掲載されたサルコジ大統領のスピーチ', '、', '心を揺り動かす', '、', '言葉では表現できないような力強さを感じました', '。', 'こんな素晴らしいメッセージに巡り会えて幸せです', '。', '有難うございました', '。', 'そんな風に言っていただけると嬉しいです', '。', 'RT']]or_a=copy.deepcopy(a) #python的赋值本质是浅拷贝 深拷贝要用deepcopy方式for s in a: new_s = [] for w in s: if w.isalpha(): new_s.append(w) s = new_sprint(or_a==a) #这种for写法(不用下标访问)无法真实替换原先迭代对象里的元素!本质是深拷贝!for i in range(len(a)): new_s = [] for w in a[i]: if w.encode().isalpha(): new_s.append(w) a[i] = new_sprint(or_a==a)

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。