2014-02-27 3 views
3

나는 엄청난 양의 스팸과 스팸이 아닌 메시지를 샘플링하여 스팸 메일 인 경우 단어 개수로 판단하여 스팸 필터를 작성하려고합니다.단어 수를 데이터베이스에 저장하는 좋은 방법은 무엇입니까?

데이터베이스에 새 메시지의 단어 수를 추가하는 좋은 방법이 필요하므로 총 수가 누적됩니다. 예를 들면 :

# initial database 
spam: 
    buy: 1 
    my: 1 
    shit: 1 

그리고 만약 내가 할 :

spam: 
    buy: 2 
    my: 1 
    shit: 1 
    this: 1 

는 YAML에게 좋은 아이디어를 사용 :

spam_filter.learn({:message => "Buy this", :type => :spam}) 

데이터베이스는 모양을? 요점은 내가 나중에 분석하고자하는 메시지의 단어의 수를 찾아보고 싶다는 것입니다.

나는 데이터베이스에 대한 근거없는 이론은 거의 모르지만, 더 많이 배우고 싶어하며, 어떤 기법을 사용할지 권장하고 있으며, 학습 자료를 환영합니다.

+1

많은 양의 데이터가 없다면 MySQL을 사용해야합니다. 관계형 데이터베이스에 대해 배우고 싶다면 Coursera의 "데이터베이스 소개"가 좋은 기초를 제공하는 데 도움이 될 수 있지만 시간을 투자해야합니다. – Ashalynd

+0

그 과정은 좋아 보인다, 나는 그것을 신청했다. 따라서 주어진 키에 대한 카운트를 증가시키는 것은 MySQL에서 간단한 작업이어야합니까? – Kappie001

+0

afaik 예, 인덱스 (이 경우 용어)를 기반으로 행을 검색하고 해당 행에 저장된 값을 증가시키는 것을 의미하는 한. – Ashalynd

답변

0

저는 데이터베이스 사용자입니다.하지만 저장하고 싶은 것이 전부라면 해시를 사용하고 필요할 경우 텍스트 파일로 저장하는 것이 가장 좋습니다. 데이터베이스를 사용하면 텍스트를 빠르게 생성 할 수있는 레코드를 찾고 업데이트하는 데 약간의 오버 헤드가 발생합니다.

이런 종류의 시나리오를 다루는 많은 파이썬 자습서가 있습니다 - 어떤 언어를 사용하고 있습니까?

데이터베이스를 정말로 사용하고 싶다면 Postgresql을 추천하거나 inmemory를 추천하십시오. 어쩌면 당신은 왜 당신이 관계형 데이터베이스가 필요하다고 생각 하는지를 상세히 설명 할 수 있습니다 - 저장할 다른 데이터가 있습니까, 작업 프레임 워크는 이미 DB에 연결되어 있습니다. 어떤 경우에는 단어 테이블과 word_counts 테이블이 잘 작동하지만 word_counts (id, word, count) -> flat 파일의 비정규 화 된 데이터베이스는 검색 및 업데이트가 더 빠를 것입니다.

관련 문제