爱体育

 
 加入
查看: 355|回复: 4

【已解决】请教下各位大佬,这段python计算相似度的代码如何转au3?-爱体育

[复制链接]
发表于 2023-9-18 20:40:51 | 显示全部楼层 |
本帖最后由 zghwelcome 于 2023-9-19 22:55 编辑


主代码


  1. import sys
  2. from vector import vector
  3. from sketch import sketch

  4. # 测试文档列表
  5. filenames = ['a.txt','b.txt','c.txt']
  6. k = 5 #k-grams
  7. d = 10000 #文档摘要维度
  8. sketches = [0 for i in filenames]
  9. print("sketches: " , sketches)
  10. for i in range(len(filenames)):
  11.     with open(filenames[i], 'r', encoding='utf-8') as f:
  12.         text = f.read()
  13.         sketches[i] = sketch(text, k, d)
  14.         # print("sketches[i]: " , sketches[i],'\n\n\n')

  15. # 输出结果标题
  16. print(' ' * 20, end = ' ')
  17. for filename in filenames:
  18.     print('{:>25}'.format(filename), end = ' ')
  19. print()

  20. # 输出结果比较明细
  21. for i in range(len(filenames)):
  22.     print('{:10}'.format(filenames[i]), end = ' ')
  23.     for j in range(len(filenames)):
  24.         print('{: <22}'.format(sketches[i].similarto(sketches[j])), end = ' ')
  25.     print()


复制代码

用到的2个库文件:


求教下各位懂python的大佬。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-9-19 08:19:35 | 显示全部楼层
赶脚也不是很难
 楼主| 发表于 2023-9-19 11:36:06 | 显示全部楼层

赶脚也不是很难

看不懂python语法😭
发表于 2023-9-19 13:41:06 | 显示全部楼层
#include
#include

; vector 类定义
func vectorcreate($a)
    local $vector = objcreate("scripting.dictionary")
    $vector.item("coords") = $a
    $vector.item("n") = ubound($a)
    $vector.__index = vectormethod
    return $vector
endfunc

func vectormethod($vector, $name, $other = null)
    switch $name
        case "getitem"
            return $vector.item("coords")
        case "add"
            return vectoradd($vector, $other)
        case "sub"
            return vectorsub($vector, $other)
        case "scale"
            return vectorscale($vector, $other)
        case "dot"
            return vectordot($vector, $other)
        case "abs"
            return vectorabs($vector)
        ; todo: 您可以继续添加其他向量操作
    endswitch
endfunc

func vectoradd($vector, $other)
    local $result[ubound($vector.item("coords"))]
    for $i = 0 to ubound($vector.item("coords")) - 1
        $result[$i] = $vector.item("coords")[$i] $other.item("coords")[$i]
    next
    return vectorcreate($result)
endfunc

func vectorsub($vector, $other)
    local $result[ubound($vector.item("coords"))]
    for $i = 0 to ubound($vector.item("coords")) - 1
        $result[$i] = $vector.item("coords")[$i] - $other.item("coords")[$i]
    next
    return vectorcreate($result)
endfunc

func vectorscale($vector, $factor)
    local $result[ubound($vector.item("coords"))]
    for $i = 0 to ubound($vector.item("coords")) - 1
        $result[$i] = $vector.item("coords")[$i] * $factor
    next
    return vectorcreate($result)
endfunc

func vectordot($vector, $other)
    local $dotproduct = 0
    for $i = 0 to ubound($vector.item("coords")) - 1
        $dotproduct = $vector.item("coords")[$i] * $other.item("coords")[$i]
    next
    return $dotproduct
endfunc

func vectorabs($vector)
    local $sumsquare = 0
    for $i = 0 to ubound($vector.item("coords")) - 1
        $sumsquare = $vector.item("coords")[$i] * $vector.item("coords")[$i]
    next
    return sqrt($sumsquare)
endfunc

; 测试代码
func main()
    local $xcoords[3] = [2.0, 2.0, 2.0]
    local $ycoords[3] = [5.0, 5.0, 0.0]
    local $x = vectorcreate($xcoords)
    local $y = vectorcreate($ycoords)

    consolewrite("x = " & _arraytostring(vectormethod($x, "getitem")) & ", y = " & _arraytostring(vectormethod($y, "getitem")) & @crlf)
    consolewrite("x y = " & _arraytostring(vectormethod(vectormethod($x, "add", $y), "getitem")) & @crlf)
    consolewrite("10x = " & _arraytostring(vectormethod(vectormethod($x, "scale", 10), "getitem")) & @crlf)
    consolewrite("|x| = " & vectormethod($x, "abs") & @crlf)
    consolewrite(" = " & vectormethod($x, "dot", $y) & @crlf)
    consolewrite("|x - y| = " & vectormethod(vectormethod($x, "sub", $y), "abs") & @crlf)
endfunc

main()

评分

威望 2 金钱 159 贡献 2 理由
haijie1223 2 99 2 此处有掌声
zghwelcome 60 很给力!
 楼主| 发表于 2023-9-19 22:55:13 | 显示全部楼层

#include
#include

感谢大佬的帮助!  维度 d 设置 1000 时,au3的计算速度真的比python逊色太多了
您需要登录后才可以回帖 登录 | 加入

||小黑屋|爱体育 ( ) "));

gmt 8, 2023-12-7 00:45 , processed in 0.094609 second(s), 21 queries .

powered by x3.5

© 2001-2023 .

返回列表
网站地图