1.7 ICTCLAS_GetParagraphProcessAWordCount
Get ProcessAWordCount, API for C#
int ICTCLAS_GetParagraphProcessAWordCount(const char *sParagraph);
Routine |
Required Header |
ICTCLAS_FileProcess |
<ICTCLAS30.h> |
Return Value
Return the paragraph word count.
Parameters
sParagraph: The source paragraph
Remarks
The ICTCLAS_GetParagraphProcessAWordCount function works properly only if ICTCLAS_Init succeeds.
The output format is customized in ICTCLAS configure.
Example
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 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;
}
/// <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();
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ImportUserDict")]
public static extern int ICTCLAS_ImportUserDict(String sFilename);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcess")]
public static extern bool ICTCLAS_FileProcess(String sSrcFilename, String sDestFilename, int bPOStagged);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcessEx")]
public static extern bool ICTCLAS_FileProcessEx(String sSrcFilename, String sDestFilename);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_GetParagraphProcessAWordCount")]
static extern int ICTCLAS_GetParagraphProcessAWordCount(String sParagraph);
//ICTCLAS_GetParagraphProcessAWordCount
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcessAW")]
static extern void ICTCLAS_ParagraphProcessAW(int nCount, [Out, MarshalAs(UnmanagedType.LPArray)] result_t[] result);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_AddUserWord")]
static extern int ICTCLAS_AddUserWord(String sWord);
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_SaveTheUsrDic")]
static extern int ICTCLAS_SaveTheUsrDic();
[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_DelUsrWord")]
static extern int ICTCLAS_DelUsrWord(String sWord);
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
if (!ICTCLAS_Init(null))
{
System.Console.WriteLine("Init ICTCLAS failed!");
return;
}
String s = "点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。";
int count = ICTCLAS_GetParagraphProcessAWordCount(s);//先得到结果的词数
result_t[] result = new result_t[count];//在客户端申请资源
ICTCLAS_ParagraphProcessAW(count, result);//获取结果存到客户的内存中
int i = 1;
foreach (result_t r in result)
{
String sWhichDic = "";
switch (r.word_type)
{
case 0:
sWhichDic = "核心词典";
break;
case 1:
sWhichDic = "用户词典";
break;
case 2:
sWhichDic = "专业词典";
break;
default:
break;
}
Console.WriteLine("No.{0}:start:{1}, length:{2},POS_ID:{3},Word_ID:{4}, UserDefine:{5}, Word:{6}\n", i++, r.start, r.length, r.POS_id, r.word_ID, sWhichDic, s.Substring(r.start / 2, r.length / 2));
}
ICTCLAS_Exit();
}
}
}
Output
1.8 ICTCLAS_ ParagraphProcessAW
Process a paragraph, API for C#
void ICTCLAS_ParagraphProcessAW(int nCount,result_t * result);
Routine |
Required Header |
ICTCLAS_FileProcess |
<ICTCLAS30.h> |
Return Value
Parameters
nCount: the paragraph word count.
result: Pointer to structure to store results.
Remarks
The ICTCLAS_ParagraphProcessAW function works properly only if ICTCLAS_Init succeeds.
The output format is customized in ICTCLAS configure.
Example
(见上1.7例子)
Output