やりたいこと
自然言語処理について勉強しています。
Wikipediaのdumpデータから本文を抜き出して処理をしようと思ってます。
xmlの処理について試しているのですが、難航しています.
欲しい出力は,,<text ~~</text>のシークポイント(pb[0])と〜〜部分のバイト数(pb[1])の記入されたファイルです.(同様に<title>,<id>も欲しい)
シークポイントとバイト数さえわかれば後述の2つ目のプログラムを使って
後述の実行結果のpb[0]部分が0と表示されていて困ってます.
プログラミング構成
jawiki-20211220-pages-articles-multistream2.xml(読み込み先のテキストファイル)
Wiki_getter1_Byte.c(バイト数を算出するプログラム,<Page>〜〜</page>間は取得できている.)
Wikigetter2_text.c(getter1の出力ファイル(get_text_Byte.txt系列)からシークポイントまでfseekしてバイト数分freadしてテキストファイルに記入上と同じくページ全体とテキスト部分が取得できている.)
以下にソースコードを貼り付けます。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 256 * 1024 * 1024 int main() { int p, pb[2]; char *line = malloc(SIZE); FILE *fp = fopen("jawiki-20211220-pages-articles-multistream2.xml", "r"); FILE *fw = fopen("get_text_byte.txt", "w"); // printf(fw,"startbyte\t記事のbyte \n"); if ((NULL == fp) || (NULL == fw)) abort(); while (p = ftell(fp), fgets(line, SIZE, fp)) { if (strstr(line, "<text")) { pb[0] = p; if (strstr(line, "</text>")) { pb[1] = p-pb[0]; } } printf("%d\t%d\n", pb[0], pb[1]); } printf("process ok"); free(line); fclose(fw); fclose(fp); }
========
読み取ったシークポイントとバイトからxmlを抽出するプログラムは既にできているのでこの出力が正しくできるようになりたいです.
*よく言われますが外部ライブラリは利用しない方向でお願いします.
追記に出力の一例を記載しておきます.
出力一例です.pb[1]が取得できてないようです.
14228089 0 34228089 0 34228089 0 34228089 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34254206 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0 34257786 0

回答1件
あなたの回答
tips
プレビュー