Welcome to the Algorithms for Computational Linguistics (ACL) Group!
We are based in Queens College and the Graduate Center, the City University of New York (CUNY).
I have the rare honor of working with some of the brightest students and scholars.
- PI: Liang Huang, Assistant Professor.
[Google Scholar Profile].
- PhD Students:
- Visiting Students:
- James Cross, Ph.D. student at CUNY. Summer 2013 --.
- Heng Yu, Ph.D. candidate, Chinese Academy of Sciences (CAS/ICT). Summer -- Fall 2013.
- Zhuoran Yu, M.S. candidate, NYU Poly. Summer 2013.
- Visiting Faculty:
- Recent External Collaborators:
- [Jan 2014] Liang is serving as Area Chair (Machine Translation) at ACL 2014. He's also giving
three talks in Beijing on 1/13-14 at Tsinghua, MSRA, and Baidu.
- [Aug 2013] We have three EMNLP papers accepted.
- [Aug 2013] We got our second Google Faculty Research Award.
- [Apr 2013] Our group is hosting the website of IWPT 2013,
with Liang being the PC Co-Chair and Kai the Webmaster. See you in Nara!
- [Jan 2013] The linear-time dynamic programming parser from
Huang and Sagae (2010) is now downloadable.
We focus on the theoretical and algorithmic aspects of computational linguistics,
in particular, efficient algorithms and datastructures for parsing and machine translation, linear-time algorithms, and grammar formalisms.
We also study
structured learning theory (esp. under inexact inference)
and online learning theory (esp. online approximations of SVM and
parallelizing online learning),
and try to scale them up for big-data in practice.
We also work on the intersection of NLP
with compiler theory and programming languages,
theoretical computer science,
psycholinguistics, historical linguistics, and computational biology.
For more details, visit the PI's website.
Group Rules and Values
“CEOs are supposed to have class. I can see that isn't an opinion you hold.”
We hold these truths to be self-evident, that
all students/postdocs are entitled to a good education and quality training in research skills.
-- Steve Jobs to Michael Dell (1997)
- Elegance is the top priority in our group and can summarize all points below.
Taste is often more important than productivity:
if a student acquires a bad taste, it's very difficult to unlearn it,
and the more productive s/he is,
the more tasteless his/her work will be. :)
- Windows operating system is strictly forbidden.
A serious computer scientist uses a Mac laptop and a Linux desktop.
Coding, debugging, and experimentation should be carried on Linux or Mac terminals only.
- M$FT software is largely forbidden (even on Macs). Office (esp. Word, the 4th-worst software ever written) is bad on Windows (except for Powerpoint) but much worse on Macs.
I always got depressed when I had to use Word or Powerpoint on Macs. So:
- Always use LaTeX instead of Word for papers.
It will make your papers look so much prettier and consistent.
You have to take the pain to learn to be an expert in LaTeX.
If a paper is typeset in Word, our first impression as a serious scientist
will be "the authors aren't that serious"
(so I shouldn't be that serious in reviewing it either! Indeed never was I.).
- Always use Keynote (plus LaTeXiT) instead of Powerpoint for slides. It will make your slides so much more elegant. Do not call our slides "PPTs" since we don't use it. For teaching, export Keynote to PDF, skipping animations.
LaTeX/beamer sides are OK only for very formal talks (e.g., programming languages) and I think in general, Keynote+LaTeXiT is still better even for theoretical talks. Talks are supposed to be all about intuitions and visualizations, rather than formulations, after all. But I agree that Keynote w/o linkback (which enabled in-place editing of equations) really sucks, esp. when you need to teach some Mathy topics; Apple should fix this!
(see for example how Mehryar Mohri's teaching slides were made via Keynote+LaTeXiT -- they're so beautiful but required way too much time and are not very editable.
See also Alex Smola's slides for the same topic; he even released the Keynote files (you can even edit his equations via LaTeXiT, though not in-place)
which I used for my class. Thanks a lot Alex!).
- Use googledoc spreadsheet instead of Excel. It's so much faster to open and sharable.
- (from Andrew) use Pages as the default app for Word files on mac. It's much faster to open and has much less bugs. Or use googledoc if the formatting isn't too complicated (I know, it sucks too but at least it has been improving).
- All paper submissions should get a "clarity" score of 4 or 5 -- I have maintained this since 2007.
- All papers have to go through at least 30 revisions before submission and 50 after acceptance.
- Teaching practicum is an extremely important part of the PhD education. Every student should TA at least twice and teach at least one real course.
- In a reading group, we only read the best papers (defined as either those award winners or highly cited ones), and the presenter should always use the authors' original slides annotated with the presenter's comments.
- Breadth is more important than depth in the first two or three years of the PhD process. Every student needs to take demanding classes outside of his/her own area (e.g., "approximation algorithms", "game theory", etc., for NLP students).
- I expect everybody in my group
to have a genuine interest in languages and linguistics,
and encourage students to take at least one linguistics course (esp. semantics and phonetics).
Language (and its recursion), after all, is the defining feature of human-being.
Language processing is AI-Complete and its holy grail.
- I expect everybody in my group, even including visiting students and professors, to be solid programmers and good mathematicians.
- Programming should be done in Python by default, while OCaml/Haskell is also encouraged
(each student should be fluent in least one functional language).
But C++, Perl, or Java is strictly forbidden because we aim for elegance and readability
rather than quick-and-dirtiness or verbosity.
That being said, each student should be able to read and hack
existing C++/Perl/Java code (e.g. somebody else's parser).
- The major goals of a PhD study should include, in decreasing order of importance:
- Make sure the student receives enough preparation s/he would need for a brighter future and a successful career after graduation.
If a PhD graduate (after 5-6 years of tedious study) cannot even find a good job with interesting work and a minimum salary (130k/year in industry or 100k/year in academia), it is largely the advisor's fault.
There is an old Chinese saying that "mei2 you3 gong1lao2, ye3 you3 ku3lao2; mei2 you3 ku3lao2, ye3 you3 pi2lao2",
meaning if you look at a PhD student's work for 5-6 years,
even if there were little contribution, there should have been hard work,
even if there were little hard work, there must have been fatigue. :)
Advisors should treat PhD students as students who need to learn,
rather than treating them as employees
who need to produce, esp. in the first two years.
- The student acquires the most valuable thing in the PhD process: patience and perseverance. S/he realizes how hard research is: nothing is going to work before you tried at least 100 times, and still isn't going to work if you try 101 times, but if you make sure you're on the right track, something will eventually work,
and that something might be quite different from but almost always more interesting than your original goal.
- The student is well-trained in technical communication skills: writing, presentation, and teaching. S/he has taken at least one writing/speaking seminar, and has taught at least one real course.
The advisor should also help non-native speaking students improve their English.
- The student learns *how* to do research, including how to find or propose a problem, survey the literature, formulate ideas, conduct experiments, and write/present them to various audiences.
- The student interns at least twice with top-class research labs or groups in other universities. Do *not* do an engineering intern, or with a non-top lab, which is harmful on your CV.
- The student should be well-connected in the community after 3 years of study, by attending conferences and giving seminars in other universities. It is the advisor's responsibility to introduce the student to those smartest minds in the field (e.g. dchiang, gildea, graehl, jason, mjohnson, mjn, satta, yoavg, etc.), so that the student would have an opportunity to collaborate with them during or after the PhD study. The student, however, is personally responsible for introducing his/her own work to many other people in conferences.
- The student has taken many relevant courses in and outside of his/her own area, greatly broadening the vision. Taking classes from good professors
also helps the student learn to teach.
- The student does some truly *independent* research without the advisor's influence, which may or may not succeed. This is the only way to check whether the student has grown fully independent and really to go. Ideally, the student should have at least one (1) single-author paper in his/her job application (it would help a lot for academic jobs and it does *not* need to be a good one! it's just a great practice).
- The student publishes 2 quality papers in top conferences/journals.
Note: points 1--3 are much more important than 4--9, because
even if the student chooses to abandon research altogether after graduation,
s/he would still benefit tremendously from the skills and lessons learned in 1--3.
Point 9 is the least important: the point of the PhD is to train you *how* to do research,
rather than the "doing" itself, though you get to learn it largely by doing
(but also by other things like courses and teaching).
It is more important that you're better prepared for future publications,
because it is all about the "potential".
If you want, you could devote the rest of your
life to publishing, so why rush during your PhD then? :P
John Hopcroft got tenured after the publication of his second paper. Well I know it was in the old days but still we should have a classical mindset rather than aiming for short-term and low-impact goals.
- People are always more important than research projects.
Choosing the right advisor in terms of research style and personality
is more important than what projects he is doing right now.
Projects change all the time, but people don't.
If there is a conflict between a person and a project,
always care for the person.