我有一长串字典:
river 4
ground: 1
journey: 1
longitude: 1
main: 1
world--four: 1
contrary: 1
cover: 1
delaware: 1
remarkable: 1
vast: 1
forty-five: 1
crookedest: 1
territories: 1
spread: 1
country: 1
longest: 1
fly: 1
atlantic: 1
crow: 1
supply: 1
seems: 1
idaho: 1
seaboard: 1
states: 1
ways: 1
degrees: 1
part: 1
twenty-eight: 1
pacific: 1
branch: 1
water: 1
considering: 1
six: 1
safe: 1
commonplace: 1
draws: 1
drainage-basin: 1
uses: 1
seventy-five: 1
slope--a: 1
missouri: 1
mississippi 3
area: 1
steamboats: 1
germany: 1
reading: 1
france: 1
proper: 1
fifty-four: 1
turkey: 1
exceptionally: 1
areas: 1
carries: 1
combined: 1
flats: 1
receives: 1
england: 1
italy: 1
scotland: 1
wales: 1
almost: 1
navigable: 1
austria: 1
region: 1
wide: 1
spain: 1
subordinate: 1
drainage-basin: 1
hundreds: 1
keels: 1
portugal: 1
water: 1
gulf: 1
ireland: 1
rivers: 1
valley: 1
fertile: 1
worth: 1
water 3
steamboats: 1
spread: 1
country: 1
states: 1
longitude: 1
fifty-four: 1
pacific: 1
vast: 1
subordinate: 1
carries: 1
keels: 1
flats: 1
supply: 1
receives: 1
atlantic: 1
forty-five: 1
river: 1
rivers: 1
idaho: 1
mississippi: 1
seaboard: 1
navigable: 1
discharges: 1
degrees: 1
twenty-eight: 1
drainage-basin: 1
hundreds: 1
st: 1
gulf: 1
draws: 1
delaware: 1
territories: 1
slope--a: 1
drainage-basin 2
area: 1
spread: 1
country: 1
states: 1
mississippi: 1
longitude: 1
france: 1
proper: 1
vast: 1
turkey: 1
forty-five: 1
areas: 1
combined: 1
germany: 1
exceptionally: 1
valley: 1
supply: 1
fertile: 1
atlantic: 1
italy: 1
river: 1
idaho: 1
wales: 1
almost: 1
seaboard: 1
spain: 1
austria: 1
region: 1
degrees: 1
twenty-eight: 1
wide: 1
england: 1
portugal: 1
water: 1
ireland: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
scotland: 1
slope--a: 1
area 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
england: 1
turkey: 1
exceptionally: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
journey 1
ground: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
seems 1
ground: 1
journey: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
states 1
spread: 1
country: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
slope--a 1
spread: 1
country: 1
states: 1
degrees: 1
longitude: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
twenty-eight: 1
river: 1
idaho: 1
remarkable 1
contrary: 1
river: 1
commonplace: 1
ways: 1
vast 1
spread: 1
country: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
pacific: 1
forty-five: 1
water: 1
seaboard: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
forty-five 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
pacific: 1
water: 1
seaboard: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
twenty-eight: 1
river: 1
idaho: 1
crookedest 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
carries 1
mississippi: 1
steamboats: 1
navigable: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
germany 1
area: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
longest 1
main: 1
river: 1
world--four: 1
branch: 1
missouri: 1
considering: 1
flats 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
rivers: 1
receives: 1
supply 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
twenty-eight: 1
river: 1
idaho: 1
receives 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
crow 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
scotland 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
spain: 1
italy: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
country 1
spread: 1
idaho: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
thames 1
thirty-eight: 1
rhine: 1
lawrence: 1
twenty-five: 1
england 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
region: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
navigable 1
mississippi: 1
steamboats: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
austria 1
area: 1
germany: 1
mississippi: 1
france: 1
proper: 1
region: 1
turkey: 1
england: 1
areas: 1
combined: 1
exceptionally: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
rhine 1
thirty-eight: 1
thames: 1
lawrence: 1
twenty-five: 1
part 1
ground: 1
journey: 1
seems: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
twenty-eight 1
spread: 1
country: 1
states: 1
degrees: 1
longitude: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
branch 1
main: 1
longest: 1
river: 1
world--four: 1
missouri: 1
considering: 1
hundreds 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
st 1
water: 1
discharges: 1
considering 1
main: 1
longest: 1
river: 1
world--four: 1
branch: 1
missouri: 1
six 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
fly: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
gulf 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
flats: 1
rivers: 1
receives: 1
ireland 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
valley: 1
safe 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
commonplace 1
contrary: 1
river: 1
remarkable: 1
ways: 1
draws 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
supply: 1
delaware: 1
territories: 1
atlantic: 1
twenty-eight: 1
river: 1
idaho: 1
delaware 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
territories: 1
atlantic: 1
supply: 1
twenty-eight: 1
river: 1
idaho: 1
thirty-eight 1
thames: 1
rhine: 1
lawrence: 1
twenty-five: 1
longitude 1
spread: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
twenty-eight: 1
river: 1
idaho: 1
world--four 1
main: 1
longest: 1
river: 1
branch: 1
missouri: 1
considering: 1
lawrence 1
thirty-eight: 1
thames: 1
rhine: 1
twenty-five: 1
ground 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
steamboats 1
mississippi: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
spread 1
seaboard: 1
country: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
idaho 1
spread: 1
country: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
reading 1
mississippi: 1
worth: 1
almost 1
area: 1
germany: 1
austria: 1
france: 1
proper: 1
england: 1
turkey: 1
exceptionally: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
mississippi: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
contrary 1
river: 1
remarkable: 1
commonplace: 1
ways: 1
cover 1
ground: 1
journey: 1
seems: 1
part: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
fly: 1
france 1
area: 1
germany: 1
austria: 1
mississippi: 1
proper: 1
england: 1
turkey: 1
exceptionally: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
spain 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
pacific 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
twenty-eight: 1
river: 1
idaho: 1
turkey 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
fifty-four 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
hundreds: 1
keels: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
subordinate 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
water: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
territories 1
spread: 1
idaho: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
supply: 1
atlantic: 1
slope--a: 1
river: 1
country: 1
combined 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
exceptionally 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
england: 1
turkey: 1
region: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
region 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
twenty-five 1
thirty-eight: 1
thames: 1
lawrence: 1
rhine: 1
rivers 1
mississippi: 1
steamboats: 1
navigable: 1
carries: 1
fifty-four: 1
keels: 1
hundreds: 1
subordinate: 1
water: 1
gulf: 1
flats: 1
receives: 1
fly 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
seventy-five: 1
river: 1
atlantic 1
spread: 1
longitude: 1
country: 1
states: 1
degrees: 1
slope--a: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
river: 1
supply: 1
twenty-eight: 1
idaho: 1
italy 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
main 1
world--four: 1
longest: 1
river: 1
branch: 1
missouri: 1
considering: 1
areas 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
england: 1
turkey: 1
exceptionally: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
seaboard 1
spread: 1
country: 1
states: 1
degrees: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
fertile 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
ways 1
contrary: 1
river: 1
remarkable: 1
commonplace: 1
discharges 1
water: 1
st: 1
degrees 1
spread: 1
country: 1
states: 1
longitude: 1
twenty-eight: 1
drainage-basin: 1
vast: 1
forty-five: 1
water: 1
seaboard: 1
pacific: 1
draws: 1
delaware: 1
territories: 1
atlantic: 1
supply: 1
slope--a: 1
river: 1
idaho: 1
wide 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
proper 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
england: 1
turkey: 1
exceptionally: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1
keels 1
mississippi: 1
steamboats: 1
navigable: 1
water: 1
fifty-four: 1
hundreds: 1
subordinate: 1
carries: 1
gulf: 1
flats: 1
rivers: 1
receives: 1
portugal 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
ireland: 1
valley: 1
worth 1
mississippi: 1
reading: 1
uses 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
fly: 1
seventy-five: 1
river: 1
seventy-five 1
ground: 1
journey: 1
seems: 1
part: 1
cover: 1
crow: 1
crookedest: 1
six: 1
safe: 1
uses: 1
river: 1
fly: 1
valley 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
wales: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
missouri 1
main: 1
longest: 1
river: 1
branch: 1
world--four: 1
considering: 1
wales 1
area: 1
germany: 1
austria: 1
mississippi: 1
france: 1
proper: 1
exceptionally: 1
turkey: 1
england: 1
areas: 1
combined: 1
scotland: 1
italy: 1
spain: 1
almost: 1
fertile: 1
region: 1
wide: 1
drainage-basin: 1
portugal: 1
ireland: 1
valley: 1我希望用余弦度量法计算字典之间的相似度:

其中p和q是字典的关键,我猜。我还想添加一个函数,当你输入单词时,它会找到字典,并按降序返回其他字典的相似性。所期望的相似性输出是:
Enter conceptword (or blank line to end): river
river
water 0.489
mississippi 0.052
spain 0.033
cairo 0.000
Synonym for river is water任何人都可以帮助或提供解决方案,或者告诉如何提取共享单词的值以供计算?谢谢。
发布于 2018-05-24 06:19:37
我不完全确定你的问题设置,但我想这会让你开始。假设您收集的字典如下:
import math
dict_list = {
"water": {
"ground": 1,
"journey": 1,
"longitude": 1,
"main": 1,
"contrary": 1,
"cover": 1,
"delaware": 1,
"remarkable": 1
},
"mississippi": {
"main": 1,
"contrary": 1,
"cover": 1,
"delaware": 1,
"remarkable": 1,
"steamboats": 1,
"germany": 1
}
}如果要对它们应用余弦规则,则需要设置向量,显示两个词典中每个单词的出现情况(也就是说,如果它出现在一个字典中,而不是另一个字典中,则另一个字典中需要为零):
def setup_vec(dict1, dict2):
dict1_missing = list(set(dict2.keys() - set(dict1.keys())))
dict2_missing = list(set(dict1.keys() - set(dict2.keys())))
for i in dict1_missing:
dict1[i] = 0
for i in dict2_missing:
dict2[i] = 0
vec1 = []
vec2 = []
for i in dict1.keys():
vec1.append(dict1[i])
vec2.append(dict2[i])
return([vec1, vec2])注意,向量元素的顺序很重要。如果你用“水”和“密西西比河”来运行它,你会得到:
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]]在此之后,您只需应用以下规则:
def dot_prod(p, q):
return sum([p[x]*q[x] for x in range(0, len(p))])
def norm(p):
return math.sqrt(dot_prod(p, p))
def cosine_metric(p, q):
return dot_prod(p, q)/(norm(p) * norm(q))以及针对所有其他字典计算它们的函数:
def find_dict(word):
if word in dict_list.keys():
for other_dicts in dict_list.keys():
if other_dicts != word:
vecs = setup_vec(dict_list[word], dict_list[other_dicts])
print(other_dicts + " " + str(cosine_metric(vecs[0], vecs[1])))结果如下:
find_dict('water')
0.6681531047810609剩下的任务是排序输出,这应该不难做到。
https://stackoverflow.com/questions/50501238
复制相似问题