ICT-STARTのホームページ

パソコンなどの話題を書いていきます。


N-gramについて(C言語編)|自然言語処理・全文検索

前のページではPHPを使用しN-gram分割を行っていましたが、今回はC言語で行います。

ですが、C言語ではUTF-8を扱う処理がないため自前で処理しています。

0xffffffe0-0xffffffef の文字が来たら3文字としてみなします。

#include <stdio.h>
#include <string.h>

int main(){
    char* moji = "最近Twitterにハマっています。";
    int i = 0, num = 0,charNum = 0;
    char c;
    for(i = 0;i < strlen(moji);i++) {
        c =  moji[i];
        if(c >= 0xffffffe0 && c <= 0xffffffef) {
            num = 2;
        }  else if(c >= 0xffffff80 && c <= 0xffffffbf) {
            num--;
        }
        printf("%c", c);
        if(num == 0){
            printf("n");
            charNum++;
        }
    }
    printf("%s(%d, %d)n", moji, charNum, strlen(moji));
}

実行結果



T
w
i
t
t
e
r









最近Twitterにハマっています。(18, 40)
 

末尾の(18, 40)というのは文字数です。strlenではUTF-8の文字として認識しないため40byteという値を表示しています。

トップへ

ブログへ

製作物

Java系

簡易Webサーバー

自然言語処理・全文検索

トップ

Rust Language

Kotlin

 

Androidアプリ

HandyReader : C/C++,Java等のソースコードに色付けをしてくれるアプリです。