Giter Site home page Giter Site logo

ownthink / jiagu Goto Github PK

View Code? Open in Web Editor NEW
3.3K 86.0 610.0 169.94 MB

Jiagu深度学习自然语言处理工具 知识图谱关系抽取 中文分词 词性标注 命名实体识别 情感分析 新词发现 关键词 文本摘要 文本聚类

Home Page: https://www.ownthink.com/

License: MIT License

Python 100.00%
nlp cws pos ner chinese-word-segmentation

jiagu's Introduction

Jiagu自然语言处理工具

Jiagu使用大规模语料训练而成。将提供中文分词、词性标注、命名实体识别、情感分析、知识图谱关系抽取、关键词抽取、文本摘要、新词发现、情感分析、文本聚类等常用自然语言处理功能。参考了各大工具优缺点制作,将Jiagu回馈给大家。

目录


提供的功能有:

  • 中文分词
  • 词性标注
  • 命名实体识别
  • 知识图谱关系抽取
  • 关键词提取
  • 文本摘要
  • 新词发现
  • 情感分析
  • 文本聚类
  • 等等。。。。

安装方式

pip安装

pip install -U jiagu

如果比较慢,可以使用清华的pip源:pip install -U jiagu -i https://pypi.tuna.tsinghua.edu.cn/simple

源码安装

git clone https://github.com/ownthink/Jiagu
cd Jiagu
python3 setup.py install

使用方式

  1. 快速上手:分词、词性标注、命名实体识别
import jiagu

#jiagu.init() # 可手动初始化,也可以动态初始化

text = '厦门明天会不会下雨'

words = jiagu.seg(text) # 分词
print(words)

pos = jiagu.pos(words) # 词性标注
print(pos)

ner = jiagu.ner(words) # 命名实体识别
print(ner)
  1. 中文分词
import jiagu

text = '汉服和服装、维基图谱'

words = jiagu.seg(text)
print(words)

# jiagu.load_userdict('dict/user.dict') # 加载自定义字典,支持字典路径、字典列表形式。
jiagu.load_userdict(['汉服和服装'])

words = jiagu.seg(text) # 自定义分词,字典分词模式有效
print(words)
  1. 知识图谱关系抽取

仅用于测试用,可以pip3 install jiagu==0.1.8,只能使用百科的描述进行测试。效果更佳的后期将会开放api。

import jiagu

# 吻别是由张学友演唱的一首歌曲。
# 《盗墓笔记》是2014年欢瑞世纪影视传媒股份有限公司出品的一部网络季播剧,改编自南派三叔所著的同名小说,由郑保瑞和罗永昌联合导演,李易峰、杨洋、唐嫣、刘天佐、张智尧、魏巍等主演。

text = '姚明1980年9月12日出生于上海市徐汇区,祖籍江苏省苏州市吴江区震泽镇,前**职业篮球运动员,司职中锋,现任中职联公司董事长兼总经理。'
knowledge = jiagu.knowledge(text)
print(knowledge)

训练数据:https://github.com/ownthink/KnowledgeGraphData

  1. 关键词提取
import jiagu

text = '''
该研究主持者之一、波士顿大学地球与环境科学系博士陈池(音)表示,“尽管**和印度国土面积仅占全球陆地的9%,但两国为这一绿化过程贡献超过三分之一。考虑到人口过多的国家一般存在对土地过度利用的问题,这个发现令人吃惊。”
NASA埃姆斯研究中心的科学家拉玛·内曼尼(Rama Nemani)说,“这一长期数据能让我们深入分析地表绿化背后的影响因素。我们一开始以为,植被增加是由于更多二氧化碳排放,导致气候更加温暖、潮湿,适宜生长。”
“MODIS的数据让我们能在非常小的尺度上理解这一现象,我们发现人类活动也作出了贡献。”
NASA文章介绍,在**为全球绿化进程做出的贡献中,有42%来源于植树造林工程,对于减少土壤侵蚀、空气污染与气候变化发挥了作用。
据观察者网过往报道,2017年我国全国共完成造林736.2万公顷、森林抚育830.2万公顷。其中,天然林资源保护工程完成造林26万公顷,退耕还林工程完成造林91.2万公顷。京津风沙源治理工程完成造林18.5万公顷。三北及长江流域等重点防护林体系工程完成造林99.1万公顷。完成国家储备林建设任务68万公顷。
'''				

keywords = jiagu.keywords(text, 5) # 关键词
print(keywords)
  1. 文本摘要
import jiagu

fin = open('input.txt', 'r')
text = fin.read()
fin.close()

summarize = jiagu.summarize(text, 3) # 摘要
print(summarize)
  1. 新词发现
import jiagu

jiagu.findword('input.txt', 'output.txt') # 根据文本,利用信息熵做新词发现。
  1. 情感分析
import jiagu

text = '很讨厌还是个懒鬼'
sentiment = jiagu.sentiment(text)
print(sentiment)
  1. 文本聚类
import jiagu

docs = [
        "百度深度学习中文情感分析工具Senta试用及在线测试",
        "情感分析是自然语言处理里面一个热门话题",
        "AI Challenger 2018 文本挖掘类竞赛相关解决方案及代码汇总",
        "深度学习实践:从零开始做电影评论文本情感分析",
        "BERT相关论文、文章和代码资源汇总",
        "将不同长度的句子用BERT预训练模型编码,映射到一个固定长度的向量上",
        "自然语言处理工具包spaCy介绍",
        "现在可以快速测试一下spaCy的相关功能,我们以英文数据为例,spaCy目前主要支持英文和德文"
    ]
cluster = jiagu.text_cluster(docs)	
print(cluster)

评价标准

  1. msr测试结果(旧版本)

msr

附录

  1. 词性标注说明
n   普通名词
nt   时间名词
nd   方位名词
nl   处所名词
nh   人名
nhf  姓
nhs  名
ns   地名
nn   族名
ni   机构名
nz   其他专名
v   动词
vd  趋向动词
vl  联系动词
vu  能愿动词
a   形容词
f   区别词
m   数词  
q   量词
d   副词
r   代词
p   介词
c   连词
u   助词
e   叹词
o   拟声词
i   习用语
j   缩略语
h   前接成分
k   后接成分
g   语素字
x   非语素字
w   标点符号
ws  非汉字字符串
wu  其他未知的符号
  1. 命名实体说明(采用BIO标记方式)
B-PER、I-PER   人名
B-LOC、I-LOC   地名
B-ORG、I-ORG   机构名

加入我们

人工智能qq群1:90780053(满)
人工智能qq群2:956936481(满)
人工智能qq群3:1160292084(满)
人工智能qq群4:1019825236(满)
人工智能qq群5:535614287
知识图谱qq群1:55152968
知识图谱qq群2:740104333(满)
知识图谱qq群3:586457987(满)
知识图谱qq群4:858829119

微信群可联系作者微信:MrYener,作者邮箱联系方式:[email protected]

捐赠作者(您的鼓励是作者开源最大的动力!!!):捐赠致谢

收款码

贡献者:

  1. Yener
  2. zengbin93
  3. dirtdust
  4. frankchen7788

jiagu's People

Contributors

dirtdust avatar gitabtion avatar ownthink avatar zengbin93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jiagu's Issues

ner使用中有问题

# coding=utf-8
import jiagu
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
jiagu.init() # 可手动初始化,也可以动态初始化
res = jiagu.ner("小名晚上请假".encode('utf-8'))
print(res)

返回元素个数与输入对不上???
什么鬼?

OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #213: KMP_AFFINITY: cpuid leaf 11 not supported - decoding legacy APIC ids.
OMP: Info #232: KMP_AFFINITY: legacy APIC ids not unique - parsing /proc/cpuinfo.
OMP: Info #148: KMP_AFFINITY: Affinity capable, using cpuinfo file
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-3
OMP: Info #156: KMP_AFFINITY: 4 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 1 packages x 1 cores/pkg x 4 threads/core (1 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread map:
OMP: Info #171: KMP_AFFINITY: OS proc 0 maps to package 49 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 1 maps to package 49 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 2 maps to package 49 thread 2 
OMP: Info #171: KMP_AFFINITY: OS proc 3 maps to package 49 thread 3 
OMP: Info #250: KMP_AFFINITY: pid 19365 tid 19365 thread 0 bound to OS proc set 0
/root/anaconda2/lib/python2.7/site-packages/jiagu-0.1.7-py2.7.egg/jiagu/bilstm_crf.py:62: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  sent_ids = [self.char_to_id.get(w) if w in self.char_to_id else self.char_to_id.get("<OOV>") for w in sent]
OMP: Info #250: KMP_AFFINITY: pid 19365 tid 19391 thread 1 bound to OS proc set 1
OMP: Info #250: KMP_AFFINITY: pid 19365 tid 19392 thread 2 bound to OS proc set 2
[u'B-PER', u'I-PER', u'I-PER', u'O', u'B-PER', u'I-PER', u'I-PER', u'I-PER', u'I-PER', u'I-PER', u'I-PER', u'I-PER', u'O', u'O', u'O', u'O', u'B-PER', u'B-PER']

能否加入与pkuseg的对比?

您好,本项目的准确率令人刮目相看,请问是否打算发表论文为科研人员提供引用
另外是否考虑与近期表现良好的提供相似功能的pkuseg进行对比?
https://github.com/lancopku/pkuseg-python
通过对你们准确率的对比发现你们应该没有用相同的数据集进行评估
估计目前就是你们两个项目争个第一了

knowledge提取问题

text2='徐克(Hark Tsui),1950年2月15日出生于越南西贡市,**香港电影导演、编剧、监制、演员。1978年,拍摄了个人首部电视剧《金刀情侠》。1979年,拍摄了电影《蝶变》。1981年,凭借黑色喜剧片《鬼马智多星》获得了第18届**电影金马奖最佳导演'
knowledge = jiagu.knowledge(text2)
print(knowledge)
[['金刀情侠', '导演', '徐克']]
后面的提取不到

text2='徐克(Hark Tsui),1950年2月15日出生于越南西贡市,**香港电影导演、编剧、监制、演员。1979年,拍摄了电影《蝶变》。1981年,凭借黑色喜剧片《鬼马智多星》获得了第18届**电影金马奖最佳导演'
knowledge = jiagu.knowledge(text2)
print(knowledge)
[['鬼马智多星', '出生日期', '1950年2月15日'], ['鬼马智多星', '出生地', '越南西贡市']]
subject提取错误

用jiagu有警告,不知道怎么解决

WARNING:tensorflow:From /anaconda3/envs/nlp/lib/python3.6/site-packages/jiagu/bilstm_crf.py:28: The name tf.GraphDef is deprecated. Please use tf.compat.v1.GraphDef instead.

WARNING:tensorflow:From /anaconda3/envs/nlp/lib/python3.6/site-packages/jiagu/bilstm_crf.py:40: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

tensorflow==1.14,python==3.6.8

不知道为什么总是警告

文本摘要以句号结尾定义句子粒度

在使用其他NLP工具来提取文本摘要时,通常是一个逗号认为一个句子。

而我在使用jiagu提取摘要时,注意到一个明显的差异:jiagu以句号认为是句子。

请问这样设置是有怎样的考量?谢谢

例如jiagu.summarize(text, 3)的结果如下:
['”NASA文章介绍,在**为全球绿化进程做出的贡献中,有42%来源于植树造林工程,对于减少土壤侵蚀、空气污染与气候变化发挥了作用。', '该研究主持者之一、波士顿大学地球与环境科学系博士陈池(音)表示,“尽管**和印度国土面积仅占全球陆地的9%,但两国为这一绿化过程贡献超过三分之一。', '其中,天然林资源保护工程完成造林26万公顷,退耕还林工程完成造林91.2万公顷。']

繁体分词支持吗?

比如:我對外訓的記憶就是滿滿的黑咖啡

分词结果:

['我', '對外訓', '的', '記憶', '就是', '滿', '滿', '的', '黑', '咖啡']
换成简体后
['我', '对', '外训', '的', '记忆', '就是', '满满', '的', '黑', '咖啡']

请问有没有更详细的开发文档?

Jiagu有没有类似开发文档这样的东西,比较细致一点的,如介绍模型的整体架构、函数组成、类图啥的,还有召回率、准确率等数据的话简直就拜谢您了。如果有的话,是否方便分享一下?我最近在用Jiagu做一个设计,私以为ownthink上的文档不大详细。

jiagu的句子摘要是基于什么算法?

我在源码textrank模块看到了句子摘要的函数,但是摘要部分好像并没有使用textrank算法。而且源码定义的Class TextRank与 jieba 中Class UndirectWeightedGraph一致,并不是真正的textrank,这个功能是没有开发完全吗?

毛都没有提取到

import jiagu

# 吻别是由张学友演唱的一首歌曲。

# text = "《盗墓笔记》是2014年欢瑞世纪影视传媒股份有限公司出品的一部网络季播剧,改编自南派三叔所著的同名小说,由郑保瑞和罗永昌联合导演,李易峰、杨洋、唐嫣、刘天佐、张智尧、魏巍等主演。"

text = "金宽是1996.1.1出生在江西太原,他喜欢钓鱼,他有个哥哥叫金天"
knowledge = jiagu.knowledge(text)
print(knowledge)

第二个text不行。。。难道不是overfit了?

关键词抽取模型效果不好

text = '宁卧庄社区迷你少年文化宫举办“团团圆圆过元宵”猜灯谜活动'
keywords = jiagu.keywords(text, 5)
print(keywords)
['谜', '迷', '灯', '猜', '元宵']

运行test/test.py时报错

错误为:
Traceback (most recent call last):
File "test.py", line 12, in
words = jiagu.seg(text, model="mmseg") # mmseg分词
TypeError: seg() got an unexpected keyword argument 'model'

环境为tensorflow1.6, jiagu0.1.8, numpy1.16.4

python ERROR

test code:
···
import jiagu
text = "今天又是新的一天"
words = jiagu.seg(text)
print(words)
···
[ERROR]:
python jiagu_test.py
Traceback (most recent call last):
File "jiagu_test.py", line 1, in
import jiagu
File "/anaconda3/envs/jiguangENV/lib/python3.5/site-packages/jiagu/init.py", line 11, in
from jiagu import analyze
File "/anaconda3/envs/jiguangENV/lib/python3.5/site-packages/jiagu/analyze.py", line 14, in
from jiagu import bilstm_crf
File "/anaconda3/envs/jiguangENV/lib/python3.5/site-packages/jiagu/bilstm_crf.py", line 16, in
from tensorflow.contrib.crf import viterbi_decode
ImportError: No module named 'tensorflow.contrib'


应该是TensorFlow版本的问题,请问下TensorFlow版本是多少是可以用的;或者有没有requirements.txt可以参考一下~

关系抽取

请问关系抽取可以输出预测标签的置信度吗?

启动jiagu后无响应

  • jiagu使用pip安装,安装成功且import没有报错

import jiagu
成功,接下来再输入指令就会出现无响应的情况;

Python 3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.

import jiagu
text = '萧峰(1060~1093年),汉名乔峰,契丹乙室部人。金庸武侠小说《天龙八部》的男主角,辽国属珊军总教头萧远山之子。'

系统环境:

  • CentOS release 6.9 (Final)
  • linux 内核 2.6.32-696.20.1.el6.x86_64
  • tf == 1.8.0

感谢你们的贡献,期待答复

演示代码错误

fin = open('input.txt', 'r')
text = fin.read()
fin.clone()

summarize = jiagu.summarize(text, 3) # 摘要
print(summarize)

fin.clone()
应该是
fin.close()

pip 安装提示找不到tensorflow1.6

ERROR: Could not find a version that satisfies the requirement tensorflow>=1.6.0 (from jiagu) (from versions: none)
ERROR: No matching distribution found for tensorflow>=1.6.0 (from jiagu)

知识关系提取

text = '**大学(Xinjiang University),简称“新大”,位于**维吾尔自治区首府乌鲁木齐,是世界一流大学建设高校、全国重点大学'
knowledge = jiagu.knowledge(text)
print(knowledge)
output:[['**大学', '简称', '新大']]

text = '**大学(Xinjiang University),简称“新小”,位于**维吾尔自治区首府乌鲁木齐,是世界一流大学建设高校、全国重点大学'
knowledge = jiagu.knowledge(text)
print(knowledge)

将新大换成新小, 新闻 等其他词汇就都不行了..

词性标注错误很多

其实随便一段话试一下就能发现,对于“的”、“有”等高频词标注错误率极高,完全不具备可用性。
以下面片段为例:
Jiagu分词与标注结果:
思知/v 是/v 作者/vl 的/v 一个/k 理想/u 国/m ,/q 作者/n 在/v 人工智能/n 方面/w 不断/v 努力/k 着/p ,/n 希望/n 有/n 一天/n 能够/n 出现/n 独立思考/d 的/v 人工智能机器人/v ,/n 虽然/u 明知道/w 短期/v 内/v 不/v 可能/m 实现/nt ,/vu 但/v 却/vd 一直/n 向着/a 他/v 的/v 梦/v 执着/u 前行/n 着/n 。/n

jieba分词与标注结果:
思知/n 是/v 作者/n 的/uj 一个/m 理想国/n ,/x 作者/n 在/p 人工智能/n 方面/n 不断/d 努力/ad 着/uz ,/x 希望/v 有/v 一天/m 能够/v 出现/v 独立思考/nr 的/uj 人工智能/n 机器人/n ,/x 虽然/c 明/a 知道/v 短期内/n 不/d 可能/v 实现/v ,/x 但/c 却/d 一直/d 向着/p 他/r 的/uj 梦/n 执着/v 前行/v 着/uz 。/x '/x

PS-原文:
思知是作者的一个理想国,作者在人工智能方面不断努力着,希望有一天能够出现独立思考的人工智能机器人,虽然明知道短期内不可能实现,但却一直向着他的梦执着前行着。

jiagu.dict

有点好奇你们的jiagu.dict中词语和词频是怎么获取的,
对比发现用动态规划查找最大概率分词,
你们的词典要比jieba默认的词典效果要好一点。

文本摘要方法报错

您好,很高兴使用您的新工具,我在测试文本摘要时,

测试样本:
`import jiagu
text = '江西省上饶市信州区人民法院'

print(len(text))
summarize = jiagu.summarize(text,3)
print(summarize)`

报错:

InvalidArgumentError (see above for traceback): NodeDef mentions attr 'identical_element_shapes' not in Op<name=TensorArrayV3; signature=size:int32 -> handle:resource, flow:float; attr=dtype:type; attr=element_shape:shape,default=<unknown>; attr=dynamic_size:bool,default=false; attr=clear_after_read:bool,default=true; attr=tensor_array_name:string,default=""; is_stateful=true>; NodeDef: prefix/char_bilstm/bidirectional_rnn/bw/bw/TensorArray_1 = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=[?,100], identical_element_shapes=true, tensor_array_name="char_bilstm/bidirectional_rnn/bw/bw/dynamic_rnn/input_0", _device="/job:localhost/replica:0/task:0/device:CPU:0"](prefix/char_bilstm/bidirectional_rnn/bw/bw/TensorArrayUnstack/strided_slice). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
请问是什么原因造成的?
感谢!

分词效果很差,自定义分词模型加载出错

首先感谢大佬的辛苦付出和奉献精神,我在使用这个工具的时候遇到以下问题:
1、分词的时候,很多公司名字都无法准确分开,如:
sent = '和无插件。阿里大华腾讯百度 CloudFabric 方案通过与 Ansible 的集成部署,可以有效帮助客户实现更'
words = jiagu.cut(sent)
print(words)
结果是:['和', '无', '插', '件', '。', '阿里大华腾', '讯', '百', '度', ' ', 'Cloud', 'Fabric', ' ', '方案', '通过', '与', ' ', 'Ansible', ' ', '的', '集成部署', ',', '可以', '有效', '帮助', '客户', '实现', '更']
分词正确率是真的比jieba高吗,是在怎样的环境下比较的呢
2、词性和ner,都是字符级别的?如果是这样那这个不合理吧,而且返回的结果展示以元组或字典的形式可能更好吧,这样能够清楚看到每个词的词性和实体类型。
3、我从你们项目下面下载下来的自定义分词模型文件,在导入的时候会出现错误:
Traceback (most recent call last):
File "/ddhome/usr/eclipse-workspace/huawei/huawei-libs/huawei-learnings/huawei-learning-server/python-module/demo.py", line 170, in
jiagu.load_model('/usr/local/lib/python3.6/site-packages/jiagu/extra_data/msr.model')
File "/usr/local/lib/python3.6/site-packages/jiagu/analyze.py", line 44, in load_model
self.seg_model = bilstm_crf.Predict(model_path)
File "/usr/local/lib/python3.6/site-packages/jiagu/bilstm_crf.py", line 15, in init
model, char_to_id, id_to_tag = pickle.load(f)
_pickle.UnpicklingError: invalid load key, '\x0a'.
谢谢大佬

模型训练方式的问题

感谢大佬的分享。非常实用。

请问,能提供一下分词器模型的训练方式吗?稍微指导一下方向也好

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.