Wordnet是一個詞典。每個詞語(word)可能有多個不同的語義,對應不同的sense。而每個不同的語義(sense)又可能對應多個詞,如topic和subject在某些情況下是同義的,一個sense中的多個消除了多義性的詞語叫做lemma。例如,“publish”是一個word,它可能有多個sense:
創新互聯專注于企業營銷型網站、網站重做改版、茶陵網站定制設計、自適應品牌網站建設、成都h5網站建設、購物商城網站建設、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為茶陵等各大城市提供網站開發制作服務。
1. (39) print,publish -- (put into print; "The newspaper published the news of the royalcouple's divorce"; "These news should not be printed")
2. (14) publish,bring out, put out, issue, release -- (prepare and issue for publicdistribution or sale; "publish a magazine or newspaper")
3. (4) publish,write -- (have (one's written work) issued for publication; "How manybooks did Georges Simenon write?"; "She published 25 books during herlong career")
在第一個sense中,print和publish都是lemma。Sense 1括號內的數字39表示publish以sense 1在某外部語料中出現的次數。顯然,publish大多數時候以sense 1出現,很少以sense 3出現。
WordNet的具體用法
NLTK是python的一個自然語言處理工具,其中提供了訪問wordnet各種功能的函數。下面簡單列舉一些常用功能:
得到wordnet本身:
from nltk.corpusimport wordnet
獲得一個詞的所有sense,包括詞語的各種變形的sense:
wordnet.synsets('published')
[Synset('print.v.01'),
Synset('publish.v.02'),
Synset('publish.v.03'),
Synset('published.a.01'),
Synset('promulgated.s.01')]
得到synset的詞性:
related.pos
's'
得到一個sense的所有lemma:
wordnet.synsets('publish')[0].lemmas
[Lemma('print.v.01.print'), Lemma('print.v.01.publish')]
得到Lemma出現的次數:
wordnet.synsets('publish')[0].lemmas[1].count()
39
在wordnet中,名詞和動詞被組織成了完整的層次式分類體系,因此可以通過計算兩個sense在分類樹中的距離,這個距離反應了它們的語義相似度:
x =wordnet.synsets('recommended')[-1]
y =wordnet.synsets('suggested')[-1]
x.shortest_path_distance(y)
形容詞和副詞的相似度計算方法:
形容詞和副詞沒有被組織成分類體系,所以不能用path_distance。
a =wordnet.synsets('beautiful')[0]
b =wordnet.synsets('good')[0]
a.shortest_path_distance(b)
-1
形容詞和副詞最有用的關系是similar to。
a =wordnet.synsets('glorious')[0]
a.similar_tos()
[Synset('incandescent.s.02'),
Synset('divine.s.06'),
……]
8個超好用內置函數set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
python中有許多內置函數,不像print那么廣為人知,但它們卻異常的強大,用好了可以大大提高代碼效率。
這次來梳理下8個好用的python內置函數
1、set()
當需要對一個列表進行去重操作的時候,set()函數就派上用場了。
用于創建一個集合,集合里的元素是無序且不重復的。集合對象創建后,還能使用并集、交集、差集功能。
2、eval()之前有人問如何用python寫一個四則運算器,輸入字符串公式,直接產生結果。用eval()來做就很簡單:eval(str_expression)作用是將字符串轉換成表達式,并且執行。
3、sorted()在處理數據過程中,我們經常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted() ,它可以對任何可迭代對象進行排序,并返回列表。對列表升序操作:
對元組倒序操作:
使用參數:key,根據自定義規則,按字符串長度來排序:
根據自定義規則,對元組構成的列表進行排序:
4、reversed()如果需要對序列的元素進行反轉操作,reversed()函數能幫到你。reversed()接受一個序列,將序列里的元素反轉,并最終返回迭代器。
5、map()做文本處理的時候,假如要對序列里的每個單詞進行大寫轉化操作。這個時候就可以使用map()函數。
map()會根據提供的函數,對指定的序列做映射,最終返回迭代器。也就是說map()函數會把序列里的每一個元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個例子,對列表里的每個數字作平方處理:
6、reduce()前面說到對列表里的每個數字作平方處理,用map()函數。那我想將列表里的每個元素相乘,該怎么做呢?這時候用到reduce()函數。
reduce()會對參數序列中元素進行累積。第一、第二個元素先進行函數操作,生成的結果再和第三個元素進行函數操作,以此類推,最終生成所有元素累積運算的結果。再舉個例子,將字母連接成字符串。
你可能已經注意到,reduce()函數在python3里已經不再是內置函數,而是遷移到了functools模塊中。這里把reduce()函數拎出來講,是因為它太重要了。
7、filter()一些數字組成的列表,要把其中偶數去掉,該怎么做呢?
filter()函數輕松完成了任務,它用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象。filter()函數和map()、reduce()函數類似,都是將序列里的每個元素映射到函數,最終返回結果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個場景,同時打印出序列里每一個元素和它對應的順序號,我們用enumerate()函數做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數用于對序列里的元素進行順序標注,返回(元素、索引)組成的迭代器。再舉個例子說明,對字符串進行標注,返回每個字母和其索引。
python編程——編寫函數,接收任意多個整數并輸出其中的最大值和所有整數之和。
def max_sum(num_list):
sum_num = 0
max_num = int(num_list[0])
num_list = num_list.split(",")
for i in range(len(num_list)):
sum_num = sum_num + int(num_list[i])
if(int(num_list[i]) max_num):
max_num = int(num_list[i])
return sum_num,max_num
if __name__ == '__main__':
num_list = input('請輸入一些整數以逗號隔開:')
sum_num,max_num = max_sum(num_list)
print('最大的整數是:',max_num)
print('所有整數之和是:',sum_num)
打印結果:
請輸入一些整數以逗號隔開:12,34,56,768
最大的整數是: 768
所有整數之和是: 870
————————————————
版權聲明:本文為CSDN博主「管牛?!沟脑瓌撐恼?,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:
Python內置函數有很多,為大家推薦5個神仙級的內置函數:
(1)Lambda函數
用于創建匿名函數,即沒有名稱的函數。它只是一個表達式,函數體比def簡單很多。當我們需要創建一個函數來執行單個操作并且可以在一行中編寫時,就可以用到匿名函數了。
Lamdba的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
利用Lamdba函數,往往可以將代碼簡化許多。
(2)Map函數
會將一個函數映射到一個輸入列表的所有元素上,比如我們先創建了一個函數來返回一個大寫的輸入單詞,然后將此函數應有到列表colors中的所有元素。
我們還可以使用匿名函數lamdba來配合map函數,這樣可以更加精簡。
(3)Reduce函數
當需要對一個列表進行一些計算并返回結果時,reduce()是個非常有用的函數。舉個例子,當需要計算一個整數列表所有元素的乘積時,即可使用reduce函數實現。
它與函數的最大的區別就是,reduce()里的映射函數(function)接收兩個參數,而map接收一個參數。
(4)enumerate函數
用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在for循環當中。
它的兩個參數,一個是序列、迭代器或其他支持迭代對象;另一個是下標起始位置,默認情況從0開始,也可以自定義計數器的起始編號。
(5)Zip函數
用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表
當我們使用zip()函數時,如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同。
一般我們常見的網址后綴(suffix)是 cn,或者net,或者com,你說的就是域名的后綴列表
后面代碼就是用dot把域名分隔開,
比如 被拆分成[ ‘www','baidu','com']
經過for循環后,到com的時候,進入if分支,而前面走的是else分支,所以可以看到sdomain的變化如下:
遇到www, sdomain包含['www']
遇到baidu sdomain被替換為['baidu']
遇到com,走if分支,append,變成 ['baidu','com']
然后join后就變成 baidu.com
不過不知道這么些的理由,要是我,就用正則表達式,或者直接保留后面兩個部分
domain=url.split('.')
if domain[-1] in suffixs:
return string.join(domain[-2:],'.')
else:
return None #not valid domain
1、定義函數
函數是可重用的程序。本書中已經使用了許多內建函數,如len()函數和range()函數,但是還沒自定義過函數。定義函數的語法格式如下:
def 函數名(參數):
函數體
定義函數的規則如下:
①關鍵字def用來定義一個函數,它是define的縮寫。
②函數名是函數的唯一標識,函數名的命名規則遵循標識符的命名規則。
③函數名后面一定要緊跟著一個括號,括號內的參數是可選的,括號后面要有冒號。
④函數體(statement)為一個或一組Python語句,注意要有縮進。
⑤函數體的第一行可以有文檔字符串,用于描述函數的功能,用三引號括起來。
按照定義規則,可以定義第一個函數了:
def?hello_world():
...?????print('Hello,world!')???#?注意函數體要有縮進
...
hello_world()
Hello,world!
這個函數不帶任何參數,它的功能是打印出“Hello,world!”。最后一行代碼hello_world()是調用函數,即讓Python執行函數的代碼。
2、全局變量和局部變量
全局變量是定義在所有函數外的變量。例如,定義一個全局變量a,分別在函數test1()和test2()使用變量a:
a?=?100???#?全局變量
def?test1():
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
test2()
100
定義了全局變量a之后,在函數test1()和test2()內都可以使用變量a,由此可知,全局變量的作用范圍是全局。
局部變量是在函數內定義的變量,除了用關鍵字global修飾的變量以外。例如,在函數test1()內定義一個局部變量a,分別在函數外和另一個函數test2()內使用變量a:
def?test1():
...?????a?=?100???#?局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
NameError:?name?'a'?is?not?defined
test2()
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
File?"stdin",?line?2,?in?test2
NameError:?name?'a'?is?not?defined
Python解釋器提示出錯了。由于局部變量a定義在函數test1()內,因此,在函數test1()內可以使用變量a,但是在函數外或者另一個函數test2()內使用變量a,都會報錯,由此可見,局部變量的作用范圍是定義它的函數內部。
一般情況下,在函數內聲明的變量都是局部變量,但是采用關鍵字global修飾的變量卻是全局變量:
def?test1():
...?????global?a???#?全局變量
...?????a?=?100
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
100
test2()
100
這個程序與上個程序相比,只是在函數test1()中多了一行代碼“global a”,程序便可以正確運行了。在函數test1()中,采用關鍵字global修飾了變量a之后,變量a就變成了全局變量,不僅可以在該函數內使用,還可以在函數外或者其他函數內使用。
如果在某個函數內局部變量與全局變量同名,那么在該函數中局部變量會覆蓋全局變量:
a?=?100???#?全局變量
def?test1():
...?????a?=?200???#?同名局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
200
test2()
100
由于在函數test1()中定義了一個與全局變量同名的局部變量a,因此,在函數test1()中全局變量a的值被局部變量覆蓋了,但是在函數test2()中全局變量a的值沒有被覆蓋。
綜上所述,在Python中,全局變量保存的數據供整個腳本文件使用;而局部變量只用于臨時保存數據,變量僅供局部代碼塊使用。
分享標題:Pythonnet函數 python telnet庫
當前網址:http://m.newbst.com/article32/higdpc.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站策劃、全網營銷推廣、企業建站、網站導航、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯