👋 Hi, I’m @annetta-zheng
👀 I’m interested in AI/ML.
🌱 I’m currently learning javascript...
📫 How to reach me
Please share any feedback, or if you want to connect 😄
- Sentiment Analysis and Music Recommendations Systems
- Reviews Sentiment Analyzer
- Local Frog Predictor
A full stack Blog Application using React components on the front end, with a CRUD Application using NodeJS + Express + MySQL on the back end.
- Account Registeration: allow users to register and upload their profile.
- User authentication: only authorized users can create, update, and delete blog posts.
- Blog Posts: users can write and update with rich text editors and pictures, and delete their blog posts.
- Customized View: users can view the posts filtered by categories and get posts recommendation within the same category.
- Responsive View: pages adapt to different screen sizes and orientations.
A Flask landing page with SQLAlchemy displaying blog posts and allowing users to login and register.
Code RESTful API Project with Redis Nameko.
Sentiment Analysis and Music Recommendations Systems Description: a review-based recommendation system with natural language processing (NLP) and Collaborative Filtering on 1.5M review data and 75k music meta data, utilizing Python via keras framework on an AWS EC2 instance.
A basic sentiment analyzer with deep learning.
- Results:
- Accuracy on the test set using the original dictionary: 80.20%
- Accuracy on the test set using the dictionary with stop words removed: 80.80%
Click to expand
For the perceptron algorithm: best combination of T = 25, with validation accuracy = 79.40%
For the average perceptron algorithm: best combination of T = 25, with validation accuracy = 80.00%
For the pegasos algorithm: best combination of T = 25 \lambda = 0.01, with validation accuracy = 80.60%
- EY 2022 Better Working World Data Challenge, Rank 74/1222.
A species distribution model of one species of frog. Species distribution models are one of the most widely used ecological tools, a cornerstone in many countries worldwide of environmental regulation and conservation.
A Strategic Game. Topics covered: Object-oriented programming (OOP), Data Structures. Play Here: Game
The Germany encryption machine used in WWII. Topics covered: Object-oriented programming (OOP), Data Structures.
The Settings Line and Input:
* B III II I maa (az) (mn)
asb
Output:
wtt
Configuration:
abcdefghijklmnopqrstuvwxyz
4 3
I Ma (wordle) (is) (fun)
II Mb (tears) (boing) (lucky)
III Mm (quack) (froze) (twins) (glyph)
B R (az) (by) (cx) (dw) (ev) (fu)
(gt) (hs) (ir) (jq) (kp) (lo) (mn)
Minmax algorithm, alpha-bata pruning.
At the beginning of the game, we start with pieces in all four corners.
There are two possible kinds of moves:
1. Extending - you can extend from a piece of your own color by laying down a new piece of your color in an empty square next to that existing piece (horizontally, vertically, or diagonally).
2. Jumping - you can jump by moving a piece of your own color to an empty, non-adjacent square that is no more than two rows and no more than two columns distant.
To make things even more interesting, you can place a set of blocks symmetrically about the center of the board before playing. These are pre-filled squares that may never be moved to (the blocks themselves never move). Setting blocks is only possible at the start of the game. The illustration below is an example of a starting configuration with 10 blocks. Each block is always reflected across the middle row and the middle column. In other words, there is symmetry both horizontally and vertically for any block that is placed. No block may be placed in the four corner squares, since the initial configuration has pieces there.
A version-control system is essentially a backup system for related collections of files.
The main functionality that Gitlet supports is:
- Saving the contents of entire directories of files. In Gitlet, this is called committing, and the saved contents themselves are called commits.
- Restoring a version of one or more files or entire commits. In Gitlet, this is called checking out those files or that commit.
- Viewing the history of your backups. In Gitlet, you view this history in something called the log.
- Maintaining related sequences of commits, called branches.
- Merging changes made in one branch into another.
- Going remote, allowing collaboration with other people over the internet.
Click to expand
By starting up the program java gitlet.Main init
, it will create a repo directory and an initial commit through the command init(). Based on the command run, structure of files will be saved.
All Commands Click to expand
```
1. java gitlet.Main add [file name]
2. java gitlet.Main commit [message]
3. java gitlet.Main rm [file name]
4. java gitlet.Main log
5. java gitlet.Main global-log
6. java gitlet.Main find [commit message]
7. java gitlet.Main status
8. java gitlet.Main checkout -- [file name]
9. java gitlet.Main checkout [commit id] -- [file name]
10. java gitlet.Main checkout [branch name]
11. java gitlet.Main branch [branch name]
12. java gitlet.Main rm-branch [branch name]
13. java gitlet.Main reset [commit id]
14. java gitlet.Main merge [branch name]
```
Sample Outputs Click to expand
Input: `java gitlet.Main log`
```
===
commit a0da1ea5a15ab613bf9961fd86f010cf74c7ee48
Date: Thu Nov 9 20:00:05 2017 -0800
A commit message.
===
commit 3e8bf1d794ca2e9ef8a4007275acf3751c7170ff
Date: Thu Nov 9 17:01:33 2017 -0800
Another commit message.
===
commit e881c9575d180a215d1a636545b8fd9abfb1d2bb
Date: Wed Dec 31 16:00:00 1969 -0800
initial commit
```
Input: `java gitlet.Main status`
```
=== Branches ===
*master
other-branch
=== Staged Files ===
wug.txt
wug2.txt
=== Removed Files ===
goodbye.txt
=== Modifications Not Staged For Commit ===
junk.txt (deleted)
wug3.txt (modified)
=== Untracked Files ===
random.stuff
```
Edge Cases Click to expand
- Conflict Files Any files modified in different ways in the current and given branches are in conflict. “Modified in different ways” can mean that the contents of both are changed and different from other, or the contents of one are changed and the other file is deleted, or the file was absent at the split point and has different contents in the given and current branches. In this case, replace the contents of the conflicted file with
<<<<<<< HEAD
contents of file in current branch
=======
contents of file in given branch
>>>>>>>
Once files have been updated according to the above, and the split point was not the current branch or the given branch, merge automatically commits with the log message Merged [given branch name] into [current branch name]. Then, if the merge encountered a conflict, print the message Encountered a merge conflict. on the terminal (not the log). Merge commits differ from other commits: they record as parents both the head of the current branch (called the first parent) and the head of the branch given on the command line to be merged in.
- Criss-cross Merges
- Choose the candidate split point that is closest to the head of the current branch (that is, is reachable by following the fewest parent pointers along some path).
- If multiple candidates are at the same closest distance, choose any one of them as the split point. (We will make sure that this only happens in our test cases when the resulting merge commit is the same with any of the closest choices.)