public static List <(string word, double weight)> JiebaWeights2StringList(ref JiebaWeights weights) { var ret = new List <(string word, double weight)>(); for (int i = 0; i < weights.Count; ++i) { var wordPtrEntryInArray = IntPtr.Add(weights.Words, IntPtr.Size * i); var weightPtr = IntPtr.Add(weights.Weights, Marshal.SizeOf <double>() * i); var wordPtr = Marshal.PtrToStructure <IntPtr>(wordPtrEntryInArray); var word = Marshal.PtrToStringUTF8(wordPtr); var weight = Marshal.PtrToStructure <double>(weightPtr); ret.Add((word, weight)); } return(ret); }
public static extern uint jieba_extract_full(IntPtr ctx, [MarshalAs(UnmanagedType.LPUTF8Str)] string sentence, int len, uint top_n, ref JiebaWeights weights);
public static extern void jieba_weights_free(ref JiebaWeights t);