Ⅰ 用python實現搜索某一網頁中出現頻率最高的前N個英文單詞 輸入: 網址,N值 輸出:按出現頻率由高到低排
好象是有一個jieba分詞。國人寫的,有一個小男孩的頭像。挺簡單,好玩。
它里有topN的演算法。我把代碼復制過來。你看一下。最關鍵的就一句話。
import sys
sys.path.append('../')
import jieba
import jieba.analyse
from optparse import OptionParser
USAGE ="usage: python extract_tags.py [file name] -k [top k]"
parser = OptionParser(USAGE)
parser.add_option("-k",dest="topK")
opt, args = parser.parse_args()
if len(args) <1:
print USAGE
#sys.exit(1)
file_name = args[0]
if opt.topK==None:
topK=10
else:
topK = int(opt.topK)
print file_name
content = open(file_name,'rb').read()
tags = jieba.analyse.extract_tags(content,topK=topK) #這一句
print ",".join(tags)
如果是英文單詞就更簡單了。可能幾句話。我試一下看
s=open("some.txt").read()
import re
words=re.findall("(?isu)(\S+)",s)
counts={}
for w in words:
try:
counts[w]+=1
except KeyError:
counts[w]=1
items=count.items()
items.sort(key=lambda x:x[1],reverse=True)
for k,v in items:
print k,v
這樣應該就可以了。
Ⅱ python中如何分析這是一本關於什麼的文檔
最基本的就是做分詞後取最高頻詞。
作為優化,可以從詞性角度排除一些高頻詞,如高頻詞「的」之類的。
如果還想進一步優化,就需要使用大數據了,建立一個詞相關性評分表,對文檔分詞後的詞頻與這相應的相關度做加權,選取加權最高的一組詞或幾組詞為文檔的索引詞表。
然後從文檔中提取整句與提取的索引詞表履蓋度最高的若干句作為文檔的摘要。
大部分的摘要演算法就是按這個思路來完成的。
Ⅲ 用Python實現小說里的高頻詞統計並顯示
用jieba做分詞,用wordcloud包做詞雲就可以了
#讀取文件內容
file='d:/艾薩克·阿西莫夫/奇妙的航程.TXT'
f=open(file,'r',encoding='gbk')
text=f.read()
f.close()
#使用jieba分詞,因為wordcloud是以空格識別單詞邊界的
importjieba
text=''.join(jieba.cut(text))
#掩碼圖片,單色圖就好
fromscipy.miscimportimread
color_mask=imread('D:/Pictures/7218.png')
#建立詞雲對象,因為是中文,指定一個中文字體,不然可能會亂碼
#WordCloud的參數可以控制很多內容,請自行閱讀包的文檔
importwordcloud
w=wordcloud.WordCloud(font_path='C:/Windows/Fonts/msyh.ttc',
max_words=100,
mask=color_mask)
#載入以空格分詞的字元串
w.generate(text)
#生成圖片
w.to_file('d:/img1.png')
Ⅳ python如何高級檢索
$ python _qa.py
Enter Context, leave by empty line
def __init__(self, datafile, default=None):
self.datafile = datafile
self.default = default
self.data = shelve.BsdDbShelf(bsddb.open(self.datafile, 'c'))
def __del__(self):
self.data.sync()
self.data.close()
def __getitem__(self, k):
return self.data.get(k, self.default)
def __setitem__(self, k, v):
self.data[k] = v
Enter and/or keywords to query
and default data
[9]
or get k v
[8, 9, 10, 11]
$
#coding:utf-8
importre
patt=re.compile("w+")
defmakeIndex():
index,lineno={},0
whileTrue:
ln=raw_input()
ifln:
lineno+=1
forwordinpatt.findall(ln):
index.setdefault(word,[]).append(lineno)
else:
break
returnindex
defindexAndQuery(index,*args):
found=None
forwordinargs:
got=index.get(word,[])
ifnotgot:
returnNone
ifnotfound:
found=set(got)
else:
found&=set(got)
ifnotfound:
returnNone
returnlist(found)
defindexOrQuery(index,*args):
found=set()
forwordinargs:
found|=set(index.get(word,[]))
returnlist(found)
deflnparser(ln):
words=patt.findall(ln.lower())
iflen(words)<2orwords[0]notin('and','or'):
#輸入的行不是以and,or開始,或未給出待查單詞
returnNone
else:
returnwords[0],words[1:]
cmdswitch={
'and':indexAndQuery,
'or':indexOrQuery,
}
print"EnterContext,leavebyemptyline"
index=makeIndex()
print"Enterand/orkeywordstoquery"
whileTrue:
got=lnparser(raw_input())
ifnotgot:
break
printcmdswitch[got[0]](index,*got[1])
Ⅳ python 提取有關鍵詞的句子怎麼做
高頻詞提取:
# !/usr/bin/python3
# coding:utf-8
import jieba.analyse
jieba.load_userdict('dict.txt') # dict.txt自定義詞典
content = open('kw.txt', 'rb').read()
tags = jieba.analyse.extract_tags(content, topK=10) # topK 為高頻詞數量
print("\n".join(tags))
Ⅵ python分詞如何實現新詞識別
你這首先肯定要把文章所有詞語挖掉,挖掉又涉及到詞的長度范圍啊,詞並不總是由2個漢字組成.對不.
編程沒有什麼難度,要頻率就設定一個變數記錄,要詞庫就設定一個列表.
關鍵是數值怎麼定.數值呢?
問得太簡單了,只能這么答.
Ⅶ 如何用Python實現在文件夾下查找一個關鍵詞
#!/usr/bin/python
#coding:utf8
import os
#判斷文件中是否包含關鍵字,是則將文件路徑列印出來
def is_file_contain_word(file_list, query_word):
for _file in file_list:
if query_word in open(_file).read():
print _file
print("Finish searching.")
#返回指定目錄的所有文件(包含子目錄的文件)
def get_all_file(floder_path):
file_list = []
if floder_path is None:
raise Exception("floder_path is None")
for dirpath, dirnames, filenames in os.walk(floder_path):
for name in filenames:
file_list.append(dirpath + '\\' + name)
return file_list
query_word = raw_input("Please input the key word that you want to search:")
basedir = raw_input("Please input the directory:")
is_file_contain_word(get_all_file(basedir), query_word)
raw_input("Press Enter to quit.")
請採納
Ⅷ 如何用python代碼實現篩選
用python代碼實現篩選的方法:
python中的if語句可以實現篩選的效果。例如:篩選出列表裡的數字就可以用「if type(i) == int」語句來篩選
示例代碼如下:
執行結果如下:
更多Python知識,請關註:Python自學網!!
Ⅸ 如何用python實現英文短文的雙詞頻統計
data="""Doyouhearthepeoplesing,singingasongofangrymen.Itisthemusicofapeople,whowillnotbeslavesagain,.."""
data=data.replace(',','')
data=data.replace('.','')
ws=data.split()
dic={}#counttwowords
ws2=[]#twowords
foriinrange(len(ws)-1):
ws2.append(ws[i]+""+ws[i+1])
forw2inws2:
ifdic.get(w2)==None:
dic[w2]=1
else:
dic[w2]+=1
dic_first={}#counttwowordsbyfirstword
forw2inws2:
(l,r)=w2.split()
ifdic_first.get(l)==None:
dic_first[l]=1
else:
dic_first[l]+=1
forw2inws2:#output
(l,r)=w2.split()
printw2,dic[w2],dic_first[l],dic[w2]/float(dic_first[l])
Ⅹ 用python怎樣從語句中分析人們討論的熱點
簡單一點的方法:分詞-->去除停用詞-->統計高頻詞彙
稍微復雜一點的方法:分詞-->去除停用詞-->LDA主題模型訓練-->言論主題分類並得到主題詞
更復雜一點的方法:在上一個方法的基礎上,添加「情緒識別」、「實體識別」等。
PS:建議將此問題添加到「機器學習」、「自然語言處理」話題下。