среда, 10 февраля 2010 г.

Автоматическое создание индексов для блогов в формате CHM (концептуально блог это и есть CHM)

1. Блог печатается в формат PDF. (Используется функция поиска для печати целиком)
2. Далее используется Text Mining для получения простого текста из PDF текста.
3. Простой текст можно разбить на отдельные TXT файлы с темами блога, для этого
написана программа, разбивающая весь текст при помощи поиска ника автора, вот она:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstdio>
 
int main()
{
    using namespace std;
    ifstream A("mined_text.txt", ios::in);
 
    int Topics = 0;
 
    while (true)
    {
        Topics++;
        if (Topics > 1000)
            break;
        do {
            char File[255];
 
            sprintf(File, "issue_%07d.txt", Topics);
            ofstream B(File);
 
            char buf[16384];
 
            while (A.getline(buf, sizeof(buf)))
            {
                if (strstr(buf, "Posted by Seeds Of Mind"))
                    goto NEXT_FILE;
                B << buf << "\n";
            }
        } while (0);
        NEXT_FILE: continue;
    }
 
    return 0;
}

4. Далее пишется CMD файл, который в цикле вызывает ещё одну программу:
#include <iostream>
#include <fstream>
 
int main(int argc, char *argv[])
{
    using namespace std;
    if (argc < 3)
        return 2;
    ifstream A(argv[1], ios::in);
    ofstream B(argv[2]);
    char buf[666111];
 
    B << "\n";
    B << "\"Content-type\" content=\"text/html; charset=UTF-8\">\n";
    B << "</span><span style="color:maroon">"</span><span style="color:#000020"> </span><span style="color:#308080"><<</span><span style="color:#000020"> argv</span><span style="color:#308080">[</span><span style="color:#008C00">1</span><span style="color:#308080">]</span><span style="color:#000020"> </span><span style="color:#308080"><<</span><span style="color:#000020"> </span><span style="color:maroon">"</span><span style="color:#1060B6">\n";
    B << "\"13.jpg\">\n";
    B << "
\n";
 
    int strok = 0;
    while (A.getline(buf, sizeof buf))
    {
        strok++;
        if (strok > 17)
            break;
        B << buf << "\n";
    }
 
    B << "\n
\n";
    B << "\n";
    B << "\n";
 
    return 1;
}

5. Создание CHM файла из множества HTM файлов - чисто техническая проблема.
6. Остаётся лишь добавить (естественно автоматически) читаемый индекс для CHM;
для этого в Intellexer Summarizer ставится опция "одно предложение от всего текста",
полученные результаты суются в индекс CHM.

Комментариев нет:

Отправить комментарий