SharpICTCLAS虽说是开源的,但07年以后就没有人再进行维护,跑搜狗的语料问题不少,就连C#版本的作者也承认有不少问题。
即时通讯软件 想得到更为准确的分词结果,还是研究SharpICTCLAS3.0,也就是ICTCLAS 2009版。dll 文件不是C#开发的,所以引入要通过DllImport
先自己写了个类
代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace test
{
[StructLayout(LayoutKind.Explicit)]
public struct result_t
{
[FieldOffset(0)]
public int start;
[FieldOffset(4)]
public int length;
[FieldOffset(8)]
public int sPos;
[FieldOffset(12)]
public int sPosLow;
[FieldOffset(16)]
public int POS_id;
[FieldOffset(20)]
public int word_ID;
[FieldOffset(24)]
public int word_type;
[FieldOffset(28)]
public int weight;
}
class ICTCLAS30
{
const string path = @"ICTCLAS30.dll";
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Init")]
public static extern bool Init(String sInitDirPath);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcess")]
public static extern String ParagraphProcess(String sParagraph, int bPOStagged);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Exit")]
public static extern bool Exit();
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ImportUserDict")]
public static extern int ImportUserDict(String sFilename);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcess")]
public static extern bool FileProcess(String sSrcFilename, String sDestFilename, int bPOStagged);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcessEx")]
public static extern bool FileProcessEx(String sSrcFilename, String sDestFilename);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_GetParagraphProcessAWordCount")]
public static extern int GetParagraphProcessAWordCount(String sParagraph);
//ICTCLAS_GetParagraphProcessAWordCount
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcessAW")]
public static extern void ParagraphProcessAW(int nCount, [Out, MarshalAs(UnmanagedType.LPArray)] result_t[] result);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_AddUserWord")]
public static extern int AddUserWord(String sWord);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_SaveTheUsrDic")]
public static extern int SaveTheUsrDic();
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_DelUsrWord")]
static extern int DelUsrWord(String sWord);
public ICTCLAS30()
{
}
}
}
调用:
代码
if (!ICTCLAS30.Init(null))
{
System.Console.WriteLine("Init ICTCLAS failed!");
return;
}
System.Console.WriteLine("Init ICTCLAS Success!");
String pResult;
pResult = ICTCLAS30.ParagraphProcess("点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。", 1);
System.Console.WriteLine(pResult);
ICTCLAS30.Exit();
注:
使用的时候把ICTCLAS30.dll,Configure.xml和Data文件夹copy到程序exe运行的位置,否则需要制定他们的位置。
如何把pResult搞成昨天博文里的wordResult格式还是个问题。还需要好好研究www.qichepeijian.com。。。。
附上:官方网站的C#调用示例
代码
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace win_csharp
{
[StructLayout(LayoutKind.Explicit)]
public struct result_t
{
[FieldOffset(0)]
public int start;
[FieldOffset(4)]
public int length;
[FieldOffset(8)]
public int POS_id;
[FieldOffset(12)]
public int word_ID;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
const string path = @"ICTCLAS30.dll";
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Init")]
public static extern bool ICTCLAS_Init(String sInitDirPath);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcess")]
public static extern String ICTCLAS_ParagraphProcess(String sParagraph, int bPOStagged);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Exit")]
public static extern bool ICTCLAS_Exit();
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if (!ICTCLAS_Init(null))
{
System.Console.WriteLine("Init ICTCLAS failed!");
return;
}
System.Console.WriteLine("Init ICTCLAS Success!");
String pResult;
pResult = ICTCLAS_ParagraphProcess("点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。", 1);
System.Console.WriteLine(pResult);
ICTCLAS_Exit();
}
}
}
相关推荐
Unity+C#,讯飞 文本转语音、语音转文本
本文介绍在Unity3D中,使用C#编写讯飞语音转文本、文本转语音的功能。这两个功能相似,学会一个另一个就简单了。
在C#中调用OpenVINO™ 模型 | 开发者实战
1.1 项目概述1.1.1 项目介绍C#调用OpenVINO™ 工具套件部署Al模型项目开发项目,简称OpenVinoSharp,这是一个示例项目,该项目实现在C#编程语言下调用Intel推出的 OpenVINO™ 工具套件,进行深度学习等Al项目在C#框架下的部署。该项目由C++语言编写OpenVINO™ dll库,并在C#语言下实现调用。项目可以实现在C#编程语言下调用Intel推出的 OpenVINO™ 工具套件,进行深度学习等Al项目在C#框架下的部署,目前可以支持的Al模型格式:■ Paddl
Qt程序中调用C#编写的dll
最近在使用Qt整合以前的一个工具时,发现有几个dll是采用C#写的,当然可以把C#写的dll重新在Qt中用C++写,虽然这是几个C#写的dll的函数接口使用的参数都比较简单,只用了int和string类型等,但在函数内部却还使用了C#的专用一些类,如果重写还是很麻烦,就查找了一些文章,多数都是说采用把C#写的dll采用COM注册方式让Qt调用,但是这样又要重新编译以前的C#项目,实在是很麻烦,所以...
零基础教程:用AI快速搭建你的第一个飞秋应用
最让我惊喜的是平台的一键部署功能,点击按钮就能把项目部署上线,生成可访问的链接分享给朋友测试。我们的简化版只需要实现最基本的文字聊天功能:发送和接收消息。当有客户端连接时,接收消息并转发给所有连接的客户端。不需要复杂的配置,专注于代码逻辑本身,这种学习体验对新手非常友好。客户端需要连接到服务器,然后可以发送消息和接收其他客户端的消息。同样使用多线程,一个线程负责发送消息,另一个线程负责接收消息。作为一个刚接触编程的新手,我一直想尝试开发一个简单的聊天应用,但面对复杂的开发环境和框架总是望而却步。
模拟飞秋软件功能实现的编程教程
本文还有配套的精品资源,点击获取 简介:本项目旨在通过编程技术复现飞秋软件的即时通讯功能。飞秋是一款免费的局域网即时通讯工具,支持文字聊天、文件传输等功能。文章将详细介绍实现用户注册、即时消息传递、好友系统、群组聊天、文件传输、离线消息、状态显示等核心功能的编程思路与技术要点。涉及前端界面构建、后端服务器搭建、数据库管理、网络通信协议和安全性措施等技术栈的应用,并强调并发处...
飞秋局域网即时通讯软件:设计与实现
在快速变化的现代工作环境中,即时通讯工具成为了企业内部沟通不可或缺的一部分。尤其是局域网内的即时通讯系统,因其具有更高的数据传输速率和更低的延迟,成为了提高工作效率和团队协作能力的利器。然而,选择合适的即时通讯工具需要深入了解其功能、性能以及对内部数据安全的保护能力。本章节将从局域网即时通讯工具的基本概念讲起,带您了解它们的设计初衷、核心功能以及在日常工作中所扮演的角色。我们将深入探讨如何根据组织的特定需求选择合适的工具,并分析未来的发展趋势。
15、用代码模拟给飞秋发消息
''' 1、采用飞鸽的协议进行传输 ''' from socket import * HOST ='localhost' PORT = 2425 ADDR = (HOST,PORT) udpCliSock = socket(AF_INET,SOCK_DGRAM) udpCliSock.connect(ADDR) #发送消息的前缀:1表示版本,100表示包号,ad
c# 局域网聊天 仿飞秋和飞鸽传书
c# 实现的局域网聊天软件,可发送表情,文件。 1.参照网上若干局域网聊天软件编写而成。 2.发送消息使用UDP,传送文件使用TCP 3.用户上线时,自动发送广播消息,而后在双方好友列表里可以互相看见 4.支持更改用户名 5.默认用户名为机器名 代码里注释写得很多,初学TCP和UDP的朋友可以此做参考。 有兴趣的朋友可以在此基础上添加组播,实现群聊功能。
C# 调用 dll 文件
一、先使用C++来创建一个 .dll 文件 1、创建新项目:CreateDll01 2、选择 “动态链接库(.dll)” 文件 3、在CreateDll01.cpp 源文件中添加如下代码 // CreateDll01.cpp : 定义 DLL 应用程序的导出函数。 // #include "stdafx.h" extern "C" __declspec(dllex...
基于C#实现飞信,FeiQ的源码
基于c#的socket程序实现了飞信的功能,在此基础上,可以掌握飞鸽以及FeiQ的实现思路与原理。
内网传输神器飞秋2013
内网传输神器飞秋2013,绿色版,免安装,开箱即用,方便快捷
飞秋的文件读取、写入代码
<br />大家都知道局域网聊天发即时通讯软件是最平常不过的事情,所以大量的导入即时通讯软件是有利于局域网聊天的,飞秋www.freeeim.com 下载在决定一个网站的排名时,不仅要对网页内容和结构进行分析,还围绕网站的即时通讯软件展开分析。对网站排名致关重要的影响因素是获得尽可能多的高质量外部即时通讯软件,也称导入即时通讯软件。<br />什么是导入即时通讯软件?<br /> <br />飞秋的文件读取、写入代码<br /><br />文件的读操作<br /> static void Main(st
c#Udp通信示例(在写类似qq的局域网聊天程序时会用到)
c#Udp通信示例c#Udp通信示例c#Udp通信示例c#Udp通信示例
[飞秋]局域网聊天写的代码旁人从来看不
有些coding fans叫嚣高水平飞秋局域网聊天写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称飞秋局域网聊天。代码具有良好的可读性,是飞秋局域网聊天基本的素质需求。 再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。飞秋局域网聊天需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境
飞秋(局域网通信)
飞秋软件,适合局域网通讯,无论是授课还是项目交流,都是非常好的选择。可以发文件图片等。和QQ没有太大的区别。
局域网聊天工具(C#源码)
综合飞秋和飞信:聊天室点对点聊,文件文件夹发送
作一个真正合格的飞秋局域网聊天
作一个真正合格的飞秋局域网聊天,或者说就是可以真正合格完成一些代码工作的飞秋局域网聊天,应该具有的素质。把它作为基本素质,并不是不重要,恰恰相反,这是飞秋局域网聊天应该具备的最基本的,也是最重要的安身立命之本。 把高水平飞秋局域网聊天说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作
Coze平台智能体开发实战:打造测试工程师的AI助手
智能体是具备特定身份和能力的AI实体,由大语言模型(LLM)驱动,并通过插件、知识库和工作流扩展其能力。明确的角色定位:可以设定特定身份和专业领域扩展能力:通过插件连接外部工具和服务记忆能力:通过知识库存储和检索专属信息流程化处理:通过工作流执行复杂多步任务通过Coze平台创建测试工程师智能体,可以显著提升测试效率和质量。明确的角色定位:聚焦测试工程师的实际需求丰富的知识库:提供准确的领域知识支持合适的工具集成:通过插件连接现有工具链持续迭代优化:根据反馈不断改进智能体行为自动化测试生成。
C# 调用C++代码
平时我们写的C#动态库,在VS中直接添加引用,然后调用DLL中的方法就好了,但是用C++生成的DLL并不行,在一般项目中,用不到C#调用C++代码的情况,但在上位机,工控行业很常见,视觉,人工智能行业中,算法很多都是C++写的,而上位机大部分都是C#开发的,那么这篇文章就从头开始,教你如何从创建一个简单的C++项目,到C#的调用。............
深入解析SOC芯片设计中DFT OCC与ATPG的协同优化策略
本文深入探讨了在复杂SOC芯片设计中,DFT(可测试性设计)的核心组件OCC(片上时钟控制器)与ATPG(自动测试向量生成)的协同优化策略。文章从基本原理出发,分析了OCC作为测试时钟管理者的关键作用,以及ATPG作为故障检测引擎的工作机制,并重点阐述了二者在测试架构选择、参数对齐、低功耗测试等场景下的协同方法与实战技巧,旨在实现更高的测试覆盖率与更低的测试成本。
mysql 计算不同胜率的活跃玩家的次日,3日,7日留存率
它根据每天的日期(logymd)和最高段位(max_rank)、胜率段落(win_rate_segment)进行分组,并计算总玩家人数(total_players)、第二天的留存人数(next_day_players)、第三天的留存人数(day3_players)和第七天的留存人数(day7_players)。注意:不是新手留存,是段位活跃玩家留存;最终的结果则是将留存数据进行展示,按照日期(date)、最高段位(rank_level)、胜率段落(win_rate_segment)进行排序。
6477



被折叠的 条评论
为什么被折叠?



