2011-10-26 1 views
3

웹 사이트에서 긍정적 인 리뷰의 수를 계산하려고합니다. 다음 문자열을 고려하십시오.언더 코어에 의해 다음 단어에 문장의 음수를 연결하십시오.

$str_1 = "This is great"; 
$str_2 = "This is not great after all"; 
$str_3 = "That isn't good and I will not return to this store."; 

이는 반대입니다. 자동 분류에서 $ str_2와 3은 대부분의 분류 자 ​​(문장에서 긍정적 인 단어의 수를 단순히 계산)에 의해 긍정적으로 계산됩니다. 다음과 같이 내가 "없습니다" "위대한"로 연결하여이 오류를 회피하고자하지 "반환"과 "좋은"와 "아니다"

$str_1 = "This is great"; 
$str_2 = "This is not_great after all"; 
$str_3 = "That isn't_good and I will not_return to this store."; 

내가 문자열을 토큰 화에 의해 시작 :

$tokens = explode("", $str_3); 

그러나 진행 방법을 모르겠습니다. 다음 단어와 함께 부정 ("not", "is not") 단어를 어떻게 연결합니까? 여기서 정규 표현식을 더 잘 사용하지 않습니까?

+1

기계 학습 케이스가 될 가능성이 높습니다. – onatm

+0

정규 표현식은 당신이 성취하고자하는 것 중 하나의 구성 요소 일지 모르나 지적한대로 충분하지 않을 수 있습니다. – Peter

+1

그리고 예제 문장으로, 나는 이것을 덧붙이고 싶다 : 이것은 결국 나쁘지 않다. 부정적인 구조의 긍정적 인 문장을 고려해야합니다. – onatm

답변

2

이 답변이 매우 도움이 될지 모르겠다. 두려워 ... 포럼에서 게시판의 정서를 실제로 분류하려는 경우, 매우 어려운 문제입니다. 당신이 제안하고있는 것은 당신을 그곳으로 데려다 줄 것입니다, 그러나 이것은 고려하지 않는 영어 (및 다른 언어들)에 훨씬 더 복잡합니다. 예를 들어 :

  • 농담이 아니에요 :이 제품은
  • 가 나는 기타에 등이 제품

을 권장하지 않습니다

  • 높은만큼이 제품을 권장하지 않습니다 짜증 말로 표현하자면, 부정에 선행 된 긍정적 인 단어를 찾는 것은 몇 가지 간단한 경우에는 효과가 있지만 다른 많은 경우에는 효과가 없을 수 있습니다. 나는보다 정교한 접근법을 원할 것입니다. 교육 데이터가 많은 경우 (예 : 수동 분류 리뷰) 신경망 또는 SVM 또는 순진한 베이 즈 분류기와 같은 분류기를 사용할 수 있습니다.

    정규 표현식을 계속 사용하면 예외 및 특수 사례가 영구적으로 추가되고 엄청나게 복잡해지고 50 %에서만 작동한다는 것을 알게 될 것입니다. 미안해, 나는 더 이상 긍정적이지 않을 수있다!

  • +0

    빠른 답장을 보내 주셔서 감사합니다. 나는 같은 예약을했지만, 내가 말하는 모든 리뷰는 Twitter 메시지에서 온 것이다. 따라서 길이는 140자를 넘지 않습니다.이것은 당신이 이야기하는 문제의 적어도 일부를 제거 할 것입니다. 또한 이것은 첫 번째 시도이며 완벽 할 필요는 없습니다. "이 제품을 충분히 높게 추천 할 수는 없습니다."와 같은 문장은 거의 사용되지 않습니다. 내가 동의해야하지만 ... 그 정규식은 두 번째 생각에 대한 최선의 접근법이 아닙니다. 날 끌어 들이기 위해 다른 생각이 없니? :) – Pr0no

    +0

    문자열을 토큰 화하여 시작한 다음 정보 검색 기술 (tf idf 검색)을 사용하여 어떤 단어가 가장 중요한 단어인지 확인한 다음 자신의 정서 (양수, 음수, 중성)를 찾습니다. 룩업 테이블. 마지막으로, 당신은 주요 감정 단어 앞에 오는 특정 부정적인 단어 ("not", "can not", "will not"등)를 찾아야합니다. 나는 아직도 약간 회의적이다, 나는 두려워한다, 그것은 짧은 메시지에도 불구하고 작동 할 것이지만, 시험할만한 가치가있다! 많은 샘플 메시지가있는 경우 정상적으로 수신 할 때까지 계속 교육하십시오 (초과 수신에주의하십시오). – Ben