2011-03-07 3 views
1

웹 페이지를 압축 텍스트 파일 (CSV)로 저장하려고합니다. 최적의 압축을 얻으려면 1000 개의 웹 페이지 세트를 제공하고 싶습니다. 그런 다음 도서관은이 콘텐츠를위한 최적의 "사전"을 만드는 데 시간을 할애해야합니다. 하나의 명백한 "사전"엔트리는 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 일 수 있습니다. 거의 모든 웹 페이지에 있기 때문에 % 1 또는 이와 비슷한 것으로 저장 될 수 있습니다. 이와 같이 사용자 정의 사전을 작성하면 압축률이 제 경우에 99 %가되어야합니다.텍스트 데이터를 압축하여 텍스트로 저장하는 라이브러리

제 질문은 MIT 또는 유사한 자유 라이센스가있는 Windows에서이 작업을 수행 할 수있는 라이브러리가 있는지 여부입니다. 그렇지 않다면 권장할만한 범용 압축 라이브러리가 있습니까? zlib로 조금 해봤지만 바이너리 데이터를 출력합니다. 이 바이너리 데이터를 텍스트로 변환하면 원본 텍스트보다 결과가 더 오래 될지 모른다는 걱정이 듭니다.

EDIT : 텍스트를 CSV 파일에 저장하고 데이터베이스 또는 Excel로 가져올 수 있어야합니다.

+1

프로그래밍 언어 란 무엇입니까? 허프만 압축 라이브러리 용 Google. 보십시오 [libhuffman] (http://huffman.sourceforge.net/) – sled

+0

그래서 나는 C++로 작성되어야한다거나 비슷하게 DLL을 찾고있다. – David

+0

저는 교육 목적으로 라이브러리가 아닌 다른 DLL을 찾지 않고 인터넷 검색을했습니다. – David

답변

4
  1. "텍스트 파일 (바이너리가 아님)은 너무 일반적입니다. 어떤 바이트 값 (00,1A 또는 무엇이든)을 사용할 수 없다는 것을 의미하는 경우, 이진법 + 과 같은 것을 사용할 수 있습니다. (비록 더 효율적인 방법을 권하고 싶지만 에서 Coroutine demo source까지).

    구체적으로 말하자면 범용 압축기를 사용하여 기본 파일을 압축 한 다음 기본 파일 + 대상 파일을 압축 한 다음 diff를 사용하면 사전 압축 (바이너리)이 가능합니다. 그런 다음 base64 또는 yenc 등으로 "텍스트" 으로 변환됩니다. 또한

    , 왼쪽
    http://compression.ru/ds/ppmtrain.rar 실제로 참조로 대체 일반적인 문구를 원한다면
    http://code.google.com/p/lzham/

  2. 및 다른 모든 것들, 예를 들어, 그것을위한 빌드에서 지원하는 일부 코더가있어
    http://xwrt.sourceforge.net/
    http://compression.ru/ds/liptify.rar: (무엇을 좀 암시하지만 "텍스트 출력"에 동일하지 않음), 이 같은 텍스트 처리기를 사용할 수 있습니다 그대로3210 (더 아프다).

  3. 또한 하이브리드 방법이 가능합니다. [1]과 같은 범용 LZ 압축기 (예 : lzma)를 사용하여 엔트로피 코딩을 텍스트 기반으로 바꿀 수 있습니다. 예를 들어 http://nishi.dreamhosters.com/u/lzmarec_v1_bin.rar 에는 LZMA의 엔트로피 코딩을 제거하는 유틸리티가 있으며, 을 텍스트로 변환하여 텍스트로 쉽게 변환 할 수 있습니다.

+0

훌륭한 답을 보내 주셔서 감사합니다. 정리하려면 CSV 파일에 텍스트를 저장하고 데이터베이스 나 Excel로 가져올 수 있어야합니다. 즉, CSV 파일의 일부 열이 압축되지 않을 수 있습니다. 나는 이것이 충분히 깨끗해지기를 바란다. – David

+0

그런 다음 CSV에서 사용할 수없는 기호를 찾아서 나머지를 http://nishi.dreamhosters.com/u/marc_v1.rar의 초기화 문자열에 추가 한 다음 일반 압축 라이브러리를 사용하십시오. – Shelwien

+0

예, 임의의 이진 [압축 알고리즘] (http://en.wikibooks.org/wiki/Data_Compression/Refereneces#open-source_example_code) (예 : zlib) 및 임의의 [2 진수 - 텍스트 인코딩] (http : //en.wikipedia.org/wiki/binary-to-text_encoding) (기준 64 인코딩 또는 basE91 인코딩)이 귀하의 기준을 충족시키는 것처럼 들리지만 ... –