給出全名(First + Surname)的列表,您如何找到文本文章中出現的名稱的頻率?將兩個單詞(全名)與Python中的文章文本進行比較
我試圖找到一種比較人的'名字'和'姓氏'到文本主體的有效方法。在這種情況下,文本的主體是一篇新聞文章,其名稱是澳大利亞政治家。
挑戰在於將新聞文章分解爲單個單詞,然後將名字& &姓氏與文章中的單詞進行比較。我曾想過把這些名字變成JSON字符串,但是覺得這樣做效率低下,反而學會了一種有效的方法。我一直在玩枚舉函數,沒有運氣。如果姓氏從'politicianName.txt'中刪除,但下面的函數將不起作用,但不適用於名字和姓氏。
def getNames(articletext):
politicianName = open("politicianName.txt").read().split('\n')
#for name in politicianName: #test the names read from file
# print name
wordList = articletext.split()
for word in wordList:
if word in politicianName and word.isalnum():
print word
article = 'Jacinta Allan this is an articletext scraped with urllib2'
getNames(article)
'''
#The enumerate example I have been testing and playing around with
mylist = [1, 6, 6, 4, 2, 3]
for i, j in enumerate(mylist[:-1]):
if j == mylist[i+1]:
mylist[i] = "foo"
mylist[i+1] = "foo"
print mylist
'''
politicianName.txt(簡述)
Jacinta Allan
Daniel Andrews
Neil Angus
Louise Asher
Brad Battin
相對於彼此名字的頻率單詞或名稱的頻率? –
最有效的方法取決於要搜索的文本數量與要搜索的名稱數量之間的關係。我會建議迭代名稱,爲每個生成一個正則表達式並計數finditer() – sphere
添加名字只會使事情變得複雜。如果沒有最後一個名字,政治家就不會被提及。我無法想象讀「Jacinta通過了一項法案......」。我的觀點是,只要搜索姓氏。 –