Code Monkey home page Code Monkey logo

scir-training-day's Introduction

训练日

简介

我们想通过这样一个项目,给新进实验室的同学提供一些简单的和自然语言处理相关的Linux命令,脚本的训练。 希望做题的同时,能够掌握一些基础的shell和脚本,同时又能对数据有一定的认识,同时能够接触一些nlp的基础问题。

现在,我们的大部分题目集中在shell和python的使用,未来可能会加入一些其他语言的练习。 当然,未来,我们也希望程序用程序自动完成判题。

内容

参考资源

  • 自然语言处理相关参考书和在线课程

shell练习

  1. shell基础练习
  2. grep练习
  3. awk练习
  4. sed练习
  5. sort练习

python练习

  1. BI标注词序列转换
  2. NGram统计
  3. 正向最大匹配分词
  4. HMM词性标注
  5. NumPy向量处理与SciPy稀疏矩阵(sparse matrix)操作

用法

使用Git

首先需要将训练题下载下来,这个过程中,可能需要一些git的知识。 具体来讲,你需要做如下几件事:

  1. 下载一个和自己的操作系统相符的git
  2. 注册一个github账号
  3. 将这个项目fork到自己的账户下
  4. 将项目clone到本地

然后开始做题吧!



例题

举shell练习中的第一题为例,来说明应该如何做题。

首先,题目写在对应文件夹的README.md中。这道题要写

编写一个shell脚本1.sh,这个脚本接受一个命令行参数,并把这个参数打印两次到标准输出。 如果输入没有参数输入或者有多于一个参数输入,输出"error"。

我们可以编写一个脚本1.sh

if [ $# != 1 ] ; then 
  echo "error"
else
	echo $1$1
fi

然后,为了验证程序的正确性,可以运行自动测试脚本run.py进行测试。由于脚本调用1.sh文件,所以为了使用自动评测文件名一定要正确命名。

看到运行结果

Test  0
=======
+ RUNNING
 -- sh 1.sh yes
+ RESULT
 -- Passed!

Test  1
=======
+ RUNNING
 -- sh 1.sh
+ RESULT
 -- Passed!

2 Runs, 2 Pass

表明进行了两个测试,并且都通过了。

保持更新

由于题目、数据都会不断更新,所以使用者应该注意与原项目保持更新。

具体做法可以参考有如下两种。

被动更新

在题目、数据获得更新之后,我们会主动向使用者发起pull request。使用者可以通过merge主干来保持更新。 所以需要注意一点,尽量不要在自己的项目中修改题目,以免更新题目时产生不必要的冲突。

主动更新

除了接受Pull Request,Fork这一项目的用户还可以通过fetch的方式主动与原项目保持一致。 具体做法可以参考以下链接。

自动评测(开发者)

现在已经实现了一些自动评测的功能,其中包括

  • stdout与制定字符串对比
  • stdout与文件对比

计划是可以做成像这个这样,这部分还在完善。

scir-training-day's People

Contributors

carfly avatar jiangfeng1124 avatar liu946 avatar oneplus avatar wenhycs 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

scir-training-day's Issues

最大正向匹配算法-测试错误

你好,在正向最大匹配分词练习里,我在文件eval.py遇到了编译错误,错误如下:

Traceback (most recent call last):
  File "eval.py", line 175, in <module>
    num_recall, num_pred, num_gold = evaluate(pred_inst, gold_inst, opt.mode)
  File "eval.py", line 34, in evaluate
    assert (pred.raw == gold.raw)
AssertionError

我的最大匹配分词代码如下:

def max_match_segment(line, dic):
    # write your code here
    # line = line.decode('utf-8')
    s = "" # pattern正常窗口
    s_f = "" # pattern前倾一位窗口
    ret = []
    tmp = set()
    for cur_word in line:  # line 为str
        s = s_f
        s_f += cur_word # s_f前倾一位
        if len(tmp) == 0: # 新词典为空,构建新词典 s_f是word子串,把word加入新词典
            tmp = set([word for word in dic if s_f in word])
        else: # 新词典不为空,遍历对比, 移除词典中不符合条件的词
            tmp = set([elem for elem in tmp if s_f in elem])

        if len(tmp) == 0: # 匹配到最大词,加入列表
            ret.append(s)
            s_f = "" + cur_word # 重置前倾
    return ret

我是mac系统,最后输出到output.dat文件中是乱码的,在decode再encode成UTF-8编码后虽然文字没问题,但是运行python eval.py --format=segment --mode=segment --eval=output.dat --gold=eval.dat依旧是同样的编译错误,不知道是什么原因呢?

4-HMM练习问题

HMM那块又有个编译问题,文章中写的这句代码运行有错误,还是看不懂

$python eval_gene_tagger.py gene.key gene.dev
Could not align gold standard and predictions in line 1.
Gold standard: BACKGROUND  Prediction file:

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.