semvec/pypi-packages huggingface dataset:
boj-tool 1.1.4
A tool for submitting to BOJ

# boj-tool
[![Contributions Welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](https://github.com/sohnryang/boj-tool/pulls)
![Python 3](https://img.shields.io/badge/python-3-blue.svg)
[![PyPI downloads](https://img.shields.io/badge/dynamic/json.svg?label=downloads&url=https%3A%2F%2Fpypistats.org%2Fapi%2Fpackages%2Fboj-tool%2Foverall&query=%24.data%5B0%5D.downloads&colorB=blue&suffix=%20overall)](https://pypi.org/project/boj-tool/)
[![GitHub license](https://img.shields.io/github/license/sohnryang/boj-tool.svg)](https://github.com/sohnryang/boj-tool/blob/master/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/sohnryang/boj-tool.svg)](https://github.com/sohnryang/boj-tool/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/sohnryang/boj-tool.svg)](https://github.com/sohnryang/boj-tool/network)
[![GitHub issues](https://img.shields.io/github/issues/sohnryang/boj-tool.svg)](https://github.com/sohnryang/boj-tool/issues)

## tl;dr 설치/사용 방법

### 설치
[PyPI](https://pypi.org/project/boj-tool/)에 올라와 있기 때문에 간단히 설치할 수 있다.
```
pip install boj-tool
```

### 사용법

#### 로그인
```
boj login
```

#### 제출
```
boj submit [문제 번호] [제출할 코드 경로]
```

#### 전적 조회
- 자신의 전적을 조회하는 경우
```
boj stats
```
- 다른 사림의 전적을 조회하는 경우
```
boj stats --user [유저 이름]
```

## 무엇인가?
[백준 온라인 저지](https://www.acmicpc.net)에 코드를 자동으로 제출하는 도구이다. 하지만 이름이 `boj-tool`인 것은 그 외에도 더 많은 기능을 지원할 예정이기 때문이다.

[BOJ API](https://www.acmicpc.net/board/view/10929)가 만들어지면 그것을 이용해 더 많은 기능을 추가할 예정이다.

## 왜 만들었는가?
- 커맨드 라인을 많이 사용하는 내 workflow 특성상 CLI tool이 편하다.
- [기존에 있던](https://github.com/sjy366/BOJ-Auto-Submit) [도구들](https://github.com/Baekjoon/submit-tool)이 내가 원하는 것과 미세하게 달랐다.
- 뭔가 코딩하고 싶었다.
- 과고 떨어져서 스트레스를 풀고 싶었다.

## 지원 언어
> 참고: 이 리스트에 없는 언어가 없으면 [Issue](https://github.com/sohnryang/boj-tool/issues)를 만들거나 [PR](https://github.com/sohnryang/boj-tool/pulls)을 보내면 지원 추가 예정이다.

- C++ (Clang, C++14, C++17 등 모두 지원)
- C (Clang, C11 등 모두 지원)
- Python (2, 3, pypy 등 모두 지원)
- Java (Oracle Java와 OpenJDK 모두 지원)
- JavaScript
- Text
- 아희

## 기능
- 쿠키를 이용한 로그인 정보 저장 (컴퓨터에 ID/Password가 저장되지 않는다.)
- 설정 파일을 통한 언어의 컴파일러, 버전 지정
- 디버깅을 위한 로깅 기능

## Roadmap
- [ ] 리팩터링
- [x] 전적 조회 기능
- [ ] 모든 언어 지원 (꼭 할것은 아님)

## 라이선스
[MIT 라이선스](https://github.com/sohnryang/boj-tool/blob/master/LICENSE)
titulus 0.0.1
Text visualization python package

# Titulus

Text visualization python package

```python
from titulus import color, print_

test = "Nous sommes le 12/24/2018 aujourd'hui. Mon numéro de tel est le (301)227-1340"
tokens = test.split()
weights = np.random.randint(low=0, high=10, size=len(tokens))

print_(' '.join(color(tokens, weights, n=10)))
```

![alt text](./imgs/demo.png "color demo")

```python
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline

categories = ['alt.atheism', 'talk.religion.misc']
newsgroups_train = fetch_20newsgroups(subset='train',
                                      categories=categories)
newsgroups_test = fetch_20newsgroups(subset='test',
                                     categories=categories)

X_train, X_test = newsgroups_train.data, newsgroups_test.data
y_train, y_test = newsgroups_train.target, newsgroups_test.target
```

```python
idx = np.random.randint(len(X_vec_list))

tokens = tokenizer(X_train[idx])
token_idx = [voc.index(t) if t in voc else -1 for t in tokens]

weights = [X_vec_arr[idx, :][i] if i>0 else 0 for i in token_idx]

print_(' '.join(color(tokens, weights, start_hex="#FEFEFE", finish_hex="#00a4e4", n=20)))
```

![alt text](./imgs/demo2.png "color demo")


```python
text_clf = Pipeline([('vect', vectorizer),
                     ('clf', SGDClassifier(loss='hinge', penalty='l2', tol=0.2,
                                               alpha=1e-3, max_iter=15, random_state=42)),

                    ])

_ = text_clf.fit(X_train, y_train)

X_vec = vectorizer.transform(X_train)
X_vec_arr = X_vec.toarray()
X_vec_list = [list(x) for x in X_vec_arr]
voc = vectorizer.get_feature_names()

idx = np.random.randint(len(X_vec_list))

tokens = tokenizer(X_train[idx])
token_idx = [voc.index(t) if t in voc else -1 for t in tokens]

weights_ = np.multiply(X_vec_arr[idx, :], text_clf.named_steps['clf'].coef_[0, :])
weights = [weights_[i] if i>0 else 0 for i in token_idx]

print_(' '.join(color(tokens, weights, start_hex="#34BF49", finish_hex="#BE0027", middle_hex="#FEFEFE", n=20)))
```

![alt text](./imgs/demo3.png "color demo")