Skip to content

Commit d89486f

Browse files
committed
[update] updates
1 parent bb783d5 commit d89486f

File tree

8 files changed

+250
-173
lines changed

8 files changed

+250
-173
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
language: java
22
jdk:
3-
- oraclejdk8
3+
- openjdk8
44
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true
55
script: mvn test
66
after_success:

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,11 @@
5353
| A | 新增 ZhConverterUtil#toSimple(String) | 2020-1-12 14:42:30 | |
5454
| A | 新增 ZhConverterUtil#toTraditional(String) | 2020-1-12 14:42:30 | |
5555
| O | 优化 ZhConverterUtil 获取转换实例为单例 | 2020-1-12 14:42:30 | |
56+
57+
# release_1.4.0
58+
59+
| 类型 | 变化 | 时间 | 备注 |
60+
|:---|:---|:---|:---|
61+
| A | 新增 ZhConverterUtil#isSimple()/#isTraditional() | 2020-2-2 13:04:58 | |
62+
| A | 新增 ZhConverterUtil#simpleList()/#traditionalList() | 2020-2-2 13:04:58 | |
63+

README.md

Lines changed: 82 additions & 170 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# opencc4j
22

3-
Opencc4j 支持中文繁简体转换,考虑到词组级别。
3+
[Opencc4j](https://github.com/houbb/opencc4j) 支持中文繁简体转换,考虑到词组级别。
44

5+
[![Build Status](https://travis-ci.com/houbb/opencc4j.svg?branch=master)](https://travis-ci.com/houbb/opencc4j)
56
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.houbb/opencc4j/badge.svg)](http://mvnrepository.com/artifact/com.github.houbb/opencc4j)
67
[![Coverage Status](https://coveralls.io/repos/github/houbb/opencc4j/badge.svg)](https://coveralls.io/github/houbb/opencc4j)
78
[![](https://img.shields.io/badge/license-Apache2-FF0080.svg)](https://github.com/houbb/opencc4j/blob/master/LICENSE.txt)
8-
9+
[![Open Source Love](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://github.com/houbb/opencc4j)
910

1011
> [变更日志](CHANGELOG.md)
1112
@@ -29,6 +30,10 @@ Opencc4j 支持中文繁简体转换,考虑到词组级别。
2930

3031
- 支持返回字符串中简体/繁体的列表信息
3132

33+
### 最新版本特性
34+
35+
- 新增工具类常用方法
36+
3237
## 测试代码
3338

3439
见 test 文件夹。
@@ -53,11 +58,17 @@ Opencc4j 支持中文繁简体转换,考虑到词组级别。
5358
<dependency>
5459
<groupId>com.github.houbb</groupId>
5560
<artifactId>opencc4j</artifactId>
56-
<version>1.3.0</version>
61+
<version>1.4.0</version>
5762
</dependency>
5863
```
5964

60-
## 转为简体
65+
## 使用示例
66+
67+
## 繁简体转换
68+
69+
对字符串进行繁简体转换,默认支持中文分词。
70+
71+
### 转为简体
6172

6273
```java
6374
String original = "生命不息,奮鬥不止";
@@ -70,7 +81,7 @@ String result = ZhConverterUtil.toSimple(original);
7081
生命不息,奋斗不止
7182
```
7283

73-
## 转为繁体
84+
### 转为繁体
7485

7586
```java
7687
String original = "生命不息,奋斗不止";
@@ -83,6 +94,60 @@ String result = ZhConverterUtil.toTraditional(original);
8394
生命不息,奮鬥不止
8495
```
8596

97+
## 繁简体判断
98+
99+
对单个字符或者词组进行繁简体判断。
100+
101+
### 是否为简体
102+
103+
```java
104+
final String simpleChar = "";
105+
final String simplePhrase = "奋斗";
106+
final String traditionalChar = "";
107+
final String traditionalPhrase = "奮鬥";
108+
109+
Assert.assertTrue(ZhConverterUtil.isSimple(simpleChar));
110+
Assert.assertTrue(ZhConverterUtil.isSimple(simplePhrase));
111+
Assert.assertFalse(ZhConverterUtil.isSimple(traditionalChar));
112+
Assert.assertFalse(ZhConverterUtil.isSimple(traditionalPhrase));
113+
```
114+
115+
### 是否为繁体
116+
117+
```java
118+
final String simpleChar = "";
119+
final String simplePhrase = "奋斗";
120+
final String traditionalChar = "";
121+
final String traditionalPhrase = "奮鬥";
122+
123+
Assert.assertTrue(ZhConverterUtil.isTraditional(traditionalChar));
124+
Assert.assertTrue(ZhConverterUtil.isTraditional(traditionalPhrase));
125+
Assert.assertFalse(ZhConverterUtil.isTraditional(simpleChar));
126+
Assert.assertFalse(ZhConverterUtil.isTraditional(simplePhrase));
127+
```
128+
129+
## 繁简体列表返回
130+
131+
返回字符串中繁简体对应的词、字列表,默认支持中文分词。
132+
133+
### 简体列表
134+
135+
```java
136+
final String original = "生命不息奋斗不止";
137+
final List<String> resultList = ZhConverterUtil.simpleList(original);
138+
139+
Assert.assertEquals("[生命不息, 奋斗, 不止]", resultList.toString());
140+
```
141+
142+
### 繁体列表
143+
144+
```java
145+
final String original = "生命不息奮鬥不止";
146+
final List<String> resultList = ZhConverterUtil.traditionalList(original);
147+
148+
Assert.assertEquals("[奮鬥]", resultList.toString());
149+
```
150+
86151
# 引导类方式
87152

88153
## 为什么需要引导类
@@ -101,7 +166,9 @@ v1.1.0 之后引入了类 [ZhConvertBootstrap](https://github.com/houbb/opencc4j
101166

102167
## 引导类使用案例
103168

104-
和工具类类似。
169+
和工具类保持相同的 api,降低学习成本。
170+
171+
此处演示其中一个功能。
105172

106173
- 转为简体
107174

@@ -110,18 +177,18 @@ final String original = "生命不息,奮鬥不止";
110177
final String result = ZhConvertBootstrap.newInstance().toSimple(original);
111178
Assert.assertEquals("生命不息,奋斗不止", result);
112179
```
180+
# 自定义分词方式
113181

114-
- 转为繁体
182+
## 系统内置分词方式
115183

116-
```java
117-
final String original = "生命不息,奋斗不止";
118-
final String result = ZhConvertBootstrap.newInstance().toTraditional(original);
119-
Assert.assertEquals("生命不息,奮鬥不止", result);
120-
```
184+
你可以通过 `Segments` 工具类获取系统内置的分词实现。
121185

122-
# 自定义分词方式
186+
| 序号 | 方法 | 准确性 | 性能 | 备注 |
187+
|:---|:---|:---|:---|:---|
188+
| 1 | defaults() || 一般 | 默认分词形式,暂时为结巴分词。 |
189+
| 2 | chars() ||| 将字符串转换为单个字符列表,一般不建议使用。 |
123190

124-
## 用途
191+
## 应用场景
125192

126193
你有时候可能除了上述的两种分词方式,会有更加适合自己业务的分词实现。
127194

@@ -146,7 +213,7 @@ public interface Segment {
146213
}
147214
```
148215

149-
备注: 默认使用的是 [花瓣分词](https://github.com/houbb/opencc4j/blob/master/src/main/java/com/github/houbb/opencc4j/support/segment/impl/HuaBanSegment.java)
216+
备注: 暂时默认使用的是 [花瓣分词](https://github.com/houbb/opencc4j/blob/master/src/main/java/com/github/houbb/opencc4j/support/segment/impl/HuaBanSegment.java)
150217

151218
## 测试代码
152219

@@ -176,161 +243,6 @@ final String result2 = ZhConvertBootstrap.newInstance().segment(new FooSegment()
176243
Assert.assertEquals("寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。測試", result2);
177244
```
178245

179-
- 创建时指定分词器
180-
181-
你可以在创建引导类的时候,直接指定分词器实现。
182-
183-
```java
184-
final String original = "寥落古行宫,宫花寂寞红。白头宫女在,闲坐说玄宗。";
185-
final String result = ZhConvertBootstrap.newInstance(new FooSegment()).toTraditional(original);
186-
Assert.assertEquals("寥落古行宮,宮花寂寞紅。白頭宮女在,閒坐說玄宗。測試", result);
187-
```
188-
189-
# V1.2.0 新特性使用说明
190-
191-
## 获取分词列表
192-
193-
- 方法
194-
195-
```java
196-
/**
197-
* 获取分词后的字符串列表
198-
* (1)如果原始字符串为空,则返回空列表
199-
* @param original 原始字符串
200-
* @return 字符串列表
201-
* @since 1.2.0
202-
*/
203-
List<String> doSeg(final String original);
204-
```
205-
206-
- 测试
207-
208-
```java
209-
final String original = "生命不息奋斗不止";
210-
final List<String> resultList = ZhConvertBootstrap.newInstance().doSeg(original);
211-
212-
String expectToString = "[生命不息, 奋斗, 不止]";
213-
Assert.assertEquals(expectToString, resultList.toString());
214-
```
215-
216-
## 判断是否为繁体
217-
218-
- 方法
219-
220-
```java
221-
/**
222-
* 是否为繁体
223-
* 1. 原始字符串为空,直接返回 false
224-
* 2. 如果长度为1,则根据繁体字列表中是否存在,直接返回结果
225-
* 3. 如果长度大于1,则判断繁体词组类表中是否存在,如果为 true,则直接返回。
226-
* 4. 如果 3 为 false,则继续判断分成单个字进行判断,如果每一个字都是繁体,则认为是繁体。
227-
* @param charOrPhrase 单个字或者词组
228-
* @return true: 是; false: 否
229-
* @since 1.2.0
230-
*/
231-
boolean isTraditional(final String charOrPhrase);
232-
```
233-
234-
- 测试
235-
236-
```java
237-
final String simpleChar = "";
238-
final String simplePhrase = "奋斗";
239-
final String traditionalChar = "";
240-
final String traditionalPhrase = "奮鬥";
241-
242-
ZhConvertBootstrap convertBootstrap = ZhConvertBootstrap.newInstance();
243-
244-
Assert.assertTrue(convertBootstrap.isTraditional(traditionalChar));
245-
Assert.assertTrue(convertBootstrap.isTraditional(traditionalPhrase));
246-
Assert.assertFalse(convertBootstrap.isTraditional(simpleChar));
247-
Assert.assertFalse(convertBootstrap.isTraditional(simplePhrase));
248-
```
249-
250-
## 判断是否为简体
251-
252-
- 方法
253-
254-
```java
255-
/**
256-
* 是否为简体
257-
* (1)原始字符串为空,直接返回 false
258-
* (2)其他情况,则和 {@link #isTraditional(String)} 取反
259-
* @param charOrPhrase 单个字或者词组
260-
* @return true: 是; false: 否
261-
* @since 1.2.0
262-
*/
263-
boolean isSimple(final String charOrPhrase);
264-
```
265-
266-
- 测试
267-
268-
```java
269-
final String simpleChar = "";
270-
final String simplePhrase = "奋斗";
271-
final String traditionalChar = "";
272-
final String traditionalPhrase = "奮鬥";
273-
274-
ZhConvertBootstrap convertBootstrap = ZhConvertBootstrap.newInstance();
275-
276-
Assert.assertTrue(convertBootstrap.isSimple(simpleChar));
277-
Assert.assertTrue(convertBootstrap.isSimple(simplePhrase));
278-
Assert.assertFalse(convertBootstrap.isSimple(traditionalChar));
279-
Assert.assertFalse(convertBootstrap.isSimple(traditionalPhrase));
280-
```
281-
282-
## 返回简体字符串列表
283-
284-
- 方法
285-
286-
```java
287-
/**
288-
* 返回简体字列表
289-
* 说明:返回 {@link #doSeg(String)} 列表中符合 {@link #isSimple(String)} 的字符串列表
290-
* @param original 原始字符串列表
291-
* @return 包含的简体字符串列表
292-
* @since 1.2.0
293-
*/
294-
List<String> simpleList(final String original);
295-
```
296-
297-
- 测试
298-
299-
```java
300-
final String original = "生命不息奋斗不止";
301-
ZhConvertBootstrap zhConvertBootstrap = ZhConvertBootstrap.newInstance();
302-
final List<String> resultList = zhConvertBootstrap.simpleList(original);
303-
304-
String expectToString = "[生命不息, 奋斗, 不止]";
305-
Assert.assertEquals(expectToString, resultList.toString());
306-
```
307-
308-
## 返回繁体字符串列表
309-
310-
- 方法
311-
312-
```java
313-
/**
314-
* 返回繁体字列表
315-
* 说明:返回 {@link #doSeg(String)} 列表中符合 {@link #isTraditional(String)} 的字符串列表
316-
* @param original 原始字符串列表
317-
* @return 包含的繁体字符的列表
318-
* @since 1.2.0
319-
*/
320-
List<String> traditionalList(final String original);
321-
```
322-
323-
- 测试
324-
325-
```java
326-
final String original = "生命不息奮鬥不止";
327-
ZhConvertBootstrap zhConvertBootstrap = ZhConvertBootstrap.newInstance();
328-
final List<String> resultList = zhConvertBootstrap.traditionalList(original);
329-
330-
String expectToString = "[奮鬥]";
331-
Assert.assertEquals(expectToString, resultList.toString());
332-
```
333-
334246
# 技术鸣谢
335247

336248
## OpenCC

doc/ISSUES.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,11 @@ ps: 只提供一个 add(key, value),新的 key 会覆盖旧的 key。
3737

3838
使用者无感知。
3939

40-
ps: 多线程处理性能提升不明显,因为每一个词语的转换很快。
40+
ps: 多线程处理性能提升不明显,因为每一个词语的转换很快。
41+
42+
# 分词默认实现替换
43+
44+
从 jieba==>segment
45+
46+
保留原始实现,用于需要引入 jar。
47+

src/main/java/com/github/houbb/opencc4j/core/impl/ZhConvertBootstrap.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.github.houbb.opencc4j.support.segment.Segment;
1818
import com.github.houbb.opencc4j.support.segment.impl.CharSegment;
1919
import com.github.houbb.opencc4j.support.segment.impl.HuaBanSegment;
20+
import com.github.houbb.opencc4j.support.segment.impl.Segments;
2021

2122
import java.util.List;
2223
import java.util.Map;
@@ -36,7 +37,7 @@ public class ZhConvertBootstrap implements ZhConvert {
3637
* 1. 默认使用花瓣分词。
3738
* @since 1.1.0
3839
*/
39-
private Segment segment = Instances.singleton(HuaBanSegment.class);
40+
private Segment segment = Segments.defaults();
4041

4142
/**
4243
* 构造器私有化
@@ -55,10 +56,12 @@ public static ZhConvertBootstrap newInstance() {
5556

5657
/**
5758
* 创建分词实例,并且制定分词实现
59+
* (1)不是很建议使用,后期配置属性较多时,这样显然不够优雅。
5860
* @param segment 分词类
5961
* @return this
6062
* @since 1.2.0
6163
*/
64+
@Deprecated
6265
public static ZhConvertBootstrap newInstance(final Segment segment) {
6366
ZhConvertBootstrap bs = newInstance();
6467
bs.segment(segment);

0 commit comments

Comments
 (0)