日本xxxx18视频在线观看-日本xxxx1819-日本xxxwww在线观看-日本xxx-日本xx-日本www在线视频

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 比較兩文本相似度

admin
2023年3月22日 16:41 本文熱度 1496

這個(gè)比較文本用到的主要是余弦定理比較文本相似度,具體原理右轉(zhuǎn)某度,主要適用場景是在考試系統(tǒng)中的簡答題概述,可根據(jù)權(quán)重自動(dòng)打分,感覺實(shí)用性蠻廣的。

先說下思路:

  1. 文本分詞,中文于英文不同,規(guī)范的英文每個(gè)都有空格自動(dòng)分詞,中文則是連成長串,我們只有一一比對(duì)每個(gè)詞出現(xiàn)的頻率做簡單的比較,在這里使用到了SCWS的一個(gè)分詞api接口http://www.ftphp.com/scws/api.php(僅支持POST,因?yàn)橐MHttp請(qǐng)求,所以請(qǐng)求時(shí)間也是根據(jù)具體環(huán)境而定,所以可以自己手寫一些字典,本地分詞要來的快)。但是用此接口分詞過程中,標(biāo)點(diǎn)符號(hào)不會(huì)被去掉,所以需要自己手動(dòng)寫方法去掉標(biāo)點(diǎn)。

  2. 獲取兩個(gè)文本的去重復(fù)并集

  3. 比較每個(gè)詞出現(xiàn)的頻率

  4. 根據(jù)余弦定理計(jì)算權(quán)重

下面是具體的代碼段(請(qǐng)求是在網(wǎng)上找的,原鏈接找不到了。。)

class Program

{

    static void Main(string[] args)

    {

        Console.Write(Sim("床前明月光,疑是地上霜", "床前明月光,疑是地上霜"));

    }

    public static double Sim(string txt1, string txt2)

    {

        List<string> sl1 = Segment(txt1);

        List<string> sl2 = Segment(txt2);

        //去重

        List<string> sl = sl1.union(sl2).ToList<string>();

        //獲取重復(fù)次數(shù)

        List<int> arrA = new List<int>();

        List<int> arrB = new List<int>();


        foreach (var str in sl)

        {

            arrA.Add(sl1.where(x => x == str).Count());

            arrB.Add(sl2.where(x => x == str).Count());

        }

        //計(jì)算商

        double num = 0;

        //被除數(shù)

        double numA = 0;

        double numB = 0;

        for (int i = 0; i < sl.Count; i++)

        {

            num += arrA[i] * arrB[i];

            numA += Math.Pow(arrA[i], 2);

            numB += Math.Pow(arrB[i], 2);

        }

        double cos = num / (Math.Sqrt(numA)* Math.Sqrt(numB));

        return cos;

    }

    public static List<string> Segment(string str)

    {

        List<string> sl = new List<string>();

        try

        {

            string s = string.Empty;

            System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();

            // 將提交的字符串?dāng)?shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)組

            byte[] postData = System.Text.Encoding.ASCII.GetBytes("data=" + System.Web.HttpUtility.UrlEncode(str) + "&respond=json&charset=utf8&ignore=yes&duality=no&traditional=no&multi=0");


            // 設(shè)置提交的相關(guān)參數(shù)

            System.Net.HttpWebRequest request = System.Net.WebRequest.create("http://www.ftphp.com/scws/api.php") as System.Net.HttpWebRequest;

            request.Method = "POST";

            request.KeepAlive = false;

            request.ContentType = "application/x-www-form-urlencoded";

            request.CookieContainer = cookieContainer;

            request.ContentLength = postData.Length;


            // 提交請(qǐng)求數(shù)據(jù)

            System.IO.Stream outputStream = request.GetRequestStream();

            outputStream.Write(postData, 0, postData.Length);

            outputStream.Close();


            // 接收返回的頁面

            System.Net.HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse;

            System.IO.Stream responseStream = response.GetResponseStream();

            System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));

            string val = reader.ReadToEnd();


            Newtonsoft.Json.Linq.JObject results = Newtonsoft.Json.Linq.JObject.Parse(val);

            foreach (var item in results["words"].Children())

            {

                Newtonsoft.Json.Linq.JObject word = Newtonsoft.Json.Linq.JObject.Parse(item.ToString());

                var sss = word["word"].ToString();

                //判斷是否為標(biāo)點(diǎn)符

                bool offom = false;

                foreach (char t in sss)

                {

                    if (t >= 0x4e00 && t <= 0x9fbb)

                    {

                        offom = true;

                    }

                    else

                    {

                        offom = false;

                    }

                }

                if (offom)

                {

                    sl.Add(sss);

                }

            }

        }

        catch

        {

        }


        return sl;

    }

}

  以上感覺很多地方都可以優(yōu)化,以后想到更好的再重新來一遍。


該文章在 2025/2/24 14:40:07 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 日本一区不卡在线观看 | 国产欧美现场va另类 | 亚洲自拍色综合图第一页区 | 精品国产亚洲一区二区在线另类 | 精品国产乱码在线观看 | 国产精品亚洲不卡一区二区 | 欧美特黄高清免费观 | 欧美狂野乱码一二三四区 | 精品美脚玉足 | 国产舌乚八伦偷品w | aa视频在线观看 | 国产日韩精品欧美一区喷 | 日本高清www在线观看视频 | 国产日韩影院在线 | 九九精品视频 | 99老司机精品视频在线观看 | 日本韩国精品一区二区乱码 | 国产亚洲精品成 | 精品国产亚洲第一区二区三区 | 日本女优在线 | 日韩欧美中文字幕1页 | 97碰碰碰视频在线观看 | 国产暴力强伦轩1区二区小说 | 九九大香尹人视频免费 | 精品国产一区二区免费不卡 | 不卡在线观看 | 日韩一级毛一欧美一级毛免费 | 国产美女精彩视频勾搭 | 91情国产l精品国产亚洲区 | 成人欧美一区二区三区的电影 | 国产午夜不卡片免费视 | 国产va免费视频一区二区三区 | 欧美日韩中文国产一区发布 | 韩国十九禁高清在线观看 | 国产亚洲精品欧美日韩在线 | 欧美?日韩?| 国产激情一区二区三区在线hd | 国产日视频在线观看 | 100部免费视频 | 国产噜噜免费 | 国产精品观看免费 |