2016년 2월 5일 금요일

전자 상거래 상품 이름 분석 I

전자 상거래에 사용되는 상품 이름이 가지는 특징을 알아본다.
상품 이름은 단어(의미) 조각들로 이루어져 있고 조각들은 관계가 있을 것이다.

온라인 마켓 상품 이름을 수집한다.
상품 이름
아이스 트레이(미니)
볼메이슨 와이드 _946ML
클레어 패브릭 액자_10CMx15CM
아동용 버드 욕실화_블루
스타 미니 바스켓_3P
* 상품 이름이 친절하지 않으면 형태소 분석기를 활용하자.

상품 이름을 단어 단위로 쪼개고 태그를 부여한다.
단어
빈도
분류
단어 길이
유리 89 형질 2
세트 86 - 2
사각 86 형태 2
베이지 72 칼라 3
핑크 72 칼라 2

단어에 대한 분포이다.

빈도
단어 길이
count 1491.000000 1491.000000
mean 6.332663 3.099262
std 12.872295 1.735401
min 1.000000 1.000000
25% 1.000000 2.000000
50% 2.000000 3.000000
75% 6.000000 4.000000
max 142.000000 12.000000
* 2196 건의 상품 이름을 단어로 분리 했더니,
단어의 종류는 1491건이고 빈도는 9442 건 이었다.
* 평균 빈도와 중위 빈도의 차이를 볼 때, 일부 단어에 대한 편중이 크다.
(마치 HKR의 빈부 격차 처럼 ... )

단어 분류에 따라 흥미로운 성질들을 보인다.
분류
단어 개수
단어 빈도
빈도/개수
- 1215 6961 6
수치 258 987 4
칼라 9 764 85
사이즈 3 271 90
형질 2 231 116
형태 2 194 97
성별 2 34 17
* 상품 이름에는 상품을 분류 할 수 있는 단어들의 출현이 빈번하다.

바이그램(bi-gram)으로 빈도를 조사했다. (상위 5개)
단어 이웃
빈도
담는 아카시아 35
자주 담는 35
식탁 매트 35
원형 접시 34
동물 친구들 33

단어 바이그램에 대한 분포이다.

빈도
count 3706.000000
mean 1.955208
std 2.315853
min 1.000000
25% 1.000000
50% 1.000000
75% 2.000000
max 35.000000

빈도가 낮아서 트리그램(tri-gram) 이상은 불 필요해 보인다.
N Gram 보다는 조합 방식을 사용하면 연관성을 찾을 수 있지 않을까?

To Be Continue ...
Happy New Year 2016 with bright moon

참고

* D1 : DataFrame on Pandas Library

# 강조 컬럼에 그라디언트 적용하기
D1.style.background_gradient(cmap='magma', subset=['times'], low=1)

# 분포 명세 보기
D1.describe()

# Dict 타입 빈도 사전으로 활용하기
corpus = {}
for word in words:
    if word not in corpus:
        corpus.setdefault(word,0)
    corpus[word] += 1

# N-gram 라이브러리
from nltk.util import ngrams

# 비 문자 정규 패턴
[\W|_]+

# 수치 정규 패턴
^(\d+\D+)+

0 개의 댓글:

댓글 쓰기