This course examines the use of natural language processing as a set of methods for exploring and reasoning about text as data, focusing especially on the applied side of NLP — using existing NLP methods and libraries in Python in new and creative ways (rather than exploring the core algorithms underlying them; see Info 159/259 for that).

Students will apply and extend existing libraries (including scikit-learn, tensorflow, keras and spacy) to textual problems. Topics include text-driven forecasting and prediction (using text for problems involving classification or regression); experimental design; the representation of text, including features derived from linguistic structure (such as parts of speech, named entities, syntax, and coreference) and features derived from low-dimensional representations of words, sentences and documents; exploring textual similarity for the purpose of clustering, deduplication and retrieval; information extraction (extracting relations between entities mentioned in text); and human-in-the-loop interactive NLP — involving people in the NLP pipeline, including active learning for annotation, computer-assisted clustering, and interactive search. This class will focus both on modern neural methods for these problems (including architectures such as CNNs, RNNs, LSTMs, and attention) and on classical methods (logistic/linear regression, Bayesian models).

This is an applied course; each class period will be divided between a short lecture and in-class lab work using Jupyter notebooks (roughly 50% each). Students will be programming extensively during class, and will work in groups with other students and the instructors. Students must prepare for each class and submit preparatory materials before class; attendance in class is required.

This course is targeted to graduate students across a range of disciplines (including information, English, sociology, public policy, journalism, computer science, law, etc.) who are interested in text as data and can program in Python but may not have formal technical backgrounds.


Graduate student status; proficient programming in Python (programs of at least 200 lines of code).


(Subject to change.)

  • Text-driven forecasting and prediction
    • Classification
    • Regression
    • Neural models (MLP, CNN, RNN, LSTM, attention)
    • Experimental design; hypothsis testing; cross-validation
    • Explainability
    • Labeling data; inter-annotator agreement; annotator bias correction
  • Representations
    • Linguistic representation (POS, NER, syntax, coreference)
    • Low-dimensional representations: word, sentence, document embeddings, PCA
    • High-dimensional representations: features
    • Domain adaptation
  • Similarity
    • Clustering (k-means, hierarchical, unsupervised Bayesian models)
    • Simlarity between representations (words, phrases, documents, including paraphrase)
    • Deduplication
    • Learned similarity
  • Interactive NLP
    • Active learning
    • Category inference
    • Computer assisted clustering
    • Interactive search
  • Information extraction


10% Participation
40% Homeworks
50% Project:
      5% Proposal/literature review
      15% Midterm report
      25% Final report
      5% Presentation


Info 256 will be capped by a semester-long project (involving one to three students), involving natural language processing in support of an empirical research question. The project will be comprised of four components:

  • — Project proposal and literature review. Students will propose the research question to be examined, motivate its rationale as an interesting question worth asking, and assess its potential to contribute new knowledge by situating it within related literature in the scientific community. (2 pages; 5 sources)
  • — Midterm report. By the middle of the course, students should present initial experimental results and establish a validation strategy to be performed at the end of experimentation. (4 pages; 10 sources)
  • — Final report. The final report will include a complete description of work undertaken for the project, including data collection, development of methods, experimental details (complete enough for replication), comparison with past work, and a thorough analysis. Projects will be evaluated according to standards for conference publication—including clarity, originality, soundness, substance, evaluation, meaningful comparison, and impact (of ideas, software, and/or datasets). (8 pages)
  • — Presentation. At the end of the semester, teams will present their work in a poster session.
All reports should use the ACL 2018 style files for either LaTeX or Microsoft Word.


Academic Integrity

All students will follow the UC Berkeley code of conduct. While the group project is a collaborative effort, all homeworks must be completed independently. All writing must be your own; if you mention the work of others, you must be clear in citing the appropriate source (For additional information on plagiarism, see here.) This holds for source code as well: if you use others' code (e.g., from StackOverflow), you must cite its source. All homeworks and project deliverables are due at time and date of the deadline.

Students with Disabilities

Our goal is to make class a learning environment accessible to all students. If you need disability-related accommodations and have a Letter of Accommodation from the DSP, have emergency medical information you wish to share with me, or need special arrangements in case the building must be evacuated, please inform me immediately. I'm happy to discuss privately after class or at my office.