새로운 자동차를 구입하는 것은 수많은 자동차 제조업체와 모델, 각각 자체 장단점, 단점 및 특수 기능으로 인해 까다 롭고 복잡 할 수 있습니다. 이 검색 엔진은 사람들이 자동차 모델에 대한 리뷰를 필터링하여 가장 흥미롭고 관련성이 높은 것을 먼저 제안하는 것을 목표로합니다.
첫 번째 인수로 주어진 지정된 .csv 파일에서 약 300,000 개의 파일을 생성하고 두 번째 인수로 지정된 디렉토리에 저장합니다. 각 파일은 .csv 파일의 줄에 해당하며 각 인수는 Newline으로 분리됩니다. 이는 역 색인을 생성하기위한 기본 데이터 세트를 형성합니다.
데이터 세트를 동시에 생성하는 스크립트 dataset_generator.py 의 병렬 버전으로 시간을 약 33%줄입니다. 이 결론은 다른 PC에서 수행 된 다양한 테스트를 기반으로합니다.
이 스크립트는 dataset_generator.py 로 생성 된 파일에서 반전 인덱스를 생성하여 파일의 디렉토리를 첫 번째 인수로 가져옵니다. 그런 다음 역 색인이 현재 디렉토리에 저장됩니다.
file : 리뷰 파일 이름maker : 검토 된 자동차의 자동차 제조업체model : 검토 된 자동차의 자동차 모델year : 검토 된 자동차의 해author : 리뷰의 저자date : 검토 날짜title : 리뷰 제목rating : 검토 등급content : 실제 검토인덱스 디렉토리 (Working Directory에 있어야 함)에서 작동하는 스크립트는 반전 인덱스에 쿼리를 요청할 수 있습니다.
주요 검색 기능 및 구문 :
word1 word2"word1 word2"word*[word1 TO word2]"word1 word2"~Nword1 AND/OR/NOT word2word~0 와일드 카드는 쿼리 결과가 악화되기 때문에 maker 와 model 필드가 스키마 정의에서 ID로 설정되어 있기 때문에 지정된 필드 (예 : maker:a* )와 함께 쿼리에서 작동하지 않습니다.
다양한 모델의 사용자 정의 점수를위한 클래스 및 메소드를 포함하는 모듈.
현재 모델 :
전체 텍스트 모델 : 자유 변수 B 및 K1 에 약간의 조율로 BM25F 점수를 사용합니다. 쿼리에 사용되는 모델 : BM25F 조정 값 : B=0.5, K1=1.5 .
감정 모델 : 검토의 감정을 사용하여 점수에 영향을 미칩니다. BM25F 및 TF_IDF 모두에서 작동하도록 설계되었습니다. 두 가지 유형의 득점이 있습니다.
감정 값으로 점수 : 검토의 감정 값 만 활용하여 공식으로 최종 점수에 영향을 미칩니다 : final_score = score * sentiment_value .
감정 값 및 순위로 점수 : 평가의 감정 값과 평가의 등급을 활용하여 점수를 고정하여 등급과 감정 값에 대한 불일치를 피합니다. 감정 유형을 기반으로 일련의 공식을 사용합니다 (자세한 내용은 코드 주석 참조) :
final_score = score * sentiment_value * rating/5 .final_score = score * sentiment_value * 1.2 - rating/5 .if rating > 3: final_score = score * sentiment_value * 0.4 - rating/5 또는 if rating < 3: final_score = score * sentiment_value * 0.4 + rating/5 . Word2Vec 모델 : 모델은 Cbow (Continuous Word) 아키텍처를 사용하여 데이터 세트에서 사용자 정의 교육을 받았습니다. 문서의 각 단어에 대해 벡터를 계산 한 다음 문서의 벡터 평균을 계산합니다. 평균은 각 문서와 사전 처리 된 쿼리 벡터 사이의 코사인 유사성을 계산하는 사용자 정의 모델 클래스에서 사용하는 .json 파일에 저장됩니다. 그런 다음 다음 공식을 사용하여 최종 점수를 얻습니다. final_score = score * cosine_similarity .
데이터 세트 생성 : 위의 링크에서 다운로드하여 프로젝트 디렉토리에 붙여 넣어 데이터 세트에서 시작하여 인덱스를 만들 수 있습니다. 다음과 같이 dataset_generator.py 실행하십시오 : python3 -s dataset_generator.py review.csv <output_directory> .
반전 인덱스 생성 : 데이터 세트를 생성 한 후에는 index_generator.py 실행하여 반전 인덱스를 생성 할 수 있습니다. 다음 명령 python3 -s index_generator.py <dataset_directory> 사용하십시오.
인덱스 쿼리 : 인덱스를 다운로드하거나 생성 한 후 Work2Vec 모델과 Word2Vec 벡터를 작업 디렉토리에서 다운로드 할 수 있습니다. 그런 다음 다음과 같이 query.py 실행합니다. python3 -s query.py <index_directory_path> .
이 프로젝트는 Python 3.11.5 (여기에서 다운로드)로 개발 및 테스트되었습니다. 다른 버전을 사용하면 오류가 발생할 수 있습니다.
모듈 요구 사항은 요구 사항에 나열되어 있습니다 .txt.
프로젝트 회원 : Mussini Simone, Siena Andrea, Stomeo Paride